es6技巧写法

为class绑定多个值

  • 普通写法

:class="{a: true, b: true}"
  • 其他

:class="[‘btn‘, ‘btn2‘, {a: true, b: false}]"

一个值判断a或者判断b

  • 普通写法

if(flg === a || flg === b)
  • 其他

[‘a‘,‘b‘].indexOf(flg) > -1

引用一个组件

  • 普通写法

import a from ‘./a.vue‘
componets: {
    a
}
  • node写法

components: {
    a: require(‘./a.vue‘)
}

V-FOR渲染

  • 一般

<li v-for="(item,index) in data" :key="index">
    {{item.uuid}} //输出uuid字段
</li>
  • 解构赋值

<li v-for="{uuid} in data" :key="uuid">
    {{uuid}} //直接解构赋值输出
</li>

CSS私有化

  • 一般

设置比较长的class类名区分,或者使用BEN等命名方法

  • css module

<style module>
    .h3 {}
</style>

style样式会存在$style计算属性中


//调用方式
<h3 :class="$style.h3"></h3>
//$style是计算属性,所以也可以这样 bool为Bool表达式
<h3 :class="{$style.h3: bool}"></h3>

缺点: 生成一个独一无二的class类名,只能使用类名class控制样式

  • scoped

<style scoped>
</style>

生成Hash属性标识.且根元素父组件的scoped影响

解决办法

使用>>>深度选择器


//寻找div下的样式,包括子组件样式
div >>> .h3 { }

对象操作

对象尽量静态化,一旦定义,就不得随意添加新的属性。如果添加属性不可避免,要使用Object.assign方法。


// bad
const a = {};
a.x = 3;

// if reshape unavoidable
const a = {};
Object.assign(a, { x: 3 });

// good
const a = { x: null };
a.x = 3;

如果对象的属性名是动态的,可以在创造对象的时候,使用属性表达式定义。


// bad
const obj = {
  id: 5,
  name: ‘San Francisco‘,
};
obj[getKey(‘enabled‘)] = true;

// good
const obj = {
  id: 5,
  name: ‘San Francisco‘,
  [getKey(‘enabled‘)]: true,  //属性表达式 6
};

数组、对象参数使用扩展运算符(spread)

连接多个数组

  • 一般

let arr1 = [1,2,3]
let arr2 = [4,6,7]
arr2 =  arr2.concat(arr1)
  • spread 运算符

let arr1 = [1,2,3]
let arr2 = [...arr1,4,6,7]

连接多个json对象

  • 一般

var a = { key1: 1, key2: 2 }
var b = Object.assign({}, a, { key3: 3 })
// 最后结果
{key1: 1, key2: 2,key3: 3 }
  • spread 运算符

var a = { key1: 1, key2: 2 }
var b = {...a, key3: 3}

es6剩余参数(rest paramete)

使用reset paramete是纯粹的Array实例

  • 一般

function a() {
    console.log(arguments)
}
a(1,2,3)
  • es6

function a(...args) {
    console.log(args)
}
a(1,2,3)

判断数组是否包含指定值

IE 任何系列都不支持

  • 一般

需要自己写工具函数

  • es6

var arr = [1,2,3]
console.log(arr.includes(1)); // true
console.log(arr.includes(4)); // false

顺序遍历对象key值

IE 任何系列都不支持

  • es6

var obj = { key1: 1, key2: 2, key3: 3 }
Object.keys(obj); // ["key1", "key2", "key3"]

顺序遍历对象value值

IE 任何系列都不支持

  • es6

var obj = { key1: 1, key2: 2, key3: 3 }
Object.values(obj); // [1,2,3]

来源:https://segmentfault.com/a/1190000017524386

原文地址:https://www.cnblogs.com/qixidi/p/10185520.html

时间: 2024-10-18 11:13:11

es6技巧写法的相关文章

es6函数写法

1.普通函数的定义,用箭头函数表示,DemoFunction是函数名,括号表示参数,大括号表示函数体的内容. 1 2 3 let DemoFunc = (param) => {     console.log(param) } 2.map函数在es6中的写法,同样也是箭头函数,e表示map出来的元素,key表示当前id 1 2 3 Array.map((e, key) => {     console.log(e, key) }) 3.类内函数的写法. 1 2 3 4 5 class Func

JavaScript技巧&写法

JavaScript技巧篇: 1>状态机 var state = function () { this.count = 0; this.fun = null; this.nowcount = 0; }; state.prototype = { load: function (count,fun) { this.count = count; this.fun = fun; this.nowcount=0; }, trigger: function () { this.nowcount++; if

六个漂亮的 ES6 技巧

通过参数默认值强制要求传参 ES6 指定默认参数在它们被实际使用的时候才会被执行,这个特性让我们可以强制要求传参: /** * Called if a parameter is missing and * the default value is evaluated. */ function mandatory() { throw new Error("Missing parameter"); } function foo(mustBeProvided = mandatory()) {

BAT脚本的一些技巧写法

我以前一直以为bat不能像Linux的shell一样设置函数并且调用,事实上我发现这是可以的.不过由于批处理的特性是一行一行执行的,这种label的函数必须要写在文本的最后.如果写在了批处理命令的前面,bat会逐行运行里面的命令的.写在文档的最后面,并且在"函数区域"前跳过这些代码. (顺便吐槽一下,这种函数的写法和linux的shell很不一样,shell的function中的命令必须写在命令的前面,让shell逐行运行一次,才能在后面的命令中被人调用.) 函数的写法: ::在这个例

Silverlight 限制 规则输入(正整数或小数)的另一种“技巧”写法

今天上午纠结一个问题很久,silverlight TextBox限制用户规则输入,要求只能输入正整数或则小数,小数点只能有且只有一个 刚开始的时候就是想直接用keyDown事件里面来解决    voidtxtParData_KeyDown(objectsender, KeyEventArgse) {             TextBoxtxt=senderasTextBox;             if (txt.Text.Length>=10) {                 e.Ha

javascript - 你不容错过的es6模板写法

1 /** 2 * ``即重音符(128键盘左上角ESC下面那个键盘) 3 * 隶属:模板字符串 4 */ 5 6 let unit = '4'; 7 let keywords = 'uc'; 8 9 // step1:模板变量 ${variable_name} 10 let url = `Shell${keywords}${unit}`; 11 console.log(url); 12 13 // 旧 14 let urls = 'Shell' + keywords + unit; 15 co

layui 的一些小技巧写法如:select默认选择,时间选择插件

<div class="layui-form-item"> <label class="layui-form-label">选择广告位置</label> <div class="layui-input-inline" style="width: 300px;" > <select name="adv_site" id="siteid"

React/React Native 的ES5 ES6写法对照表

转载: http://bbs.reactnative.cn/topic/15/react-react-native-%E7%9A%84es5-es6%E5%86%99%E6%B3%95%E5%AF%B9%E7%85%A7%E8%A1%A8 英文版: https://babeljs.io/blog/2015/06/07/react-on-es6-plus 很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends

粗看ES6之面向对象写法

在es6以前,js没有类的概念,虽然有构造函数原型的方式用来做面向对向开发,但是对于书法并不是十分友好,而且对于继承实现也不是十分友好. es6引入class constructor extends super等关键字简化了JS面向对象写法,以后可以跟后端说JS也终于是有类的一门语言了,哈哈. ES6的面向对象写法如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT