VUE es6技巧写法
一些稍微优雅的技巧写法,并不是非的是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 // 可以使用Array.prototype.includes() 返回 Boolean if(['a', 'b'].includes(flg)) {}
引用一个组件
- 普通写法
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]
一行书写多步操作
适用于只有两三行简单操作
- 旧
var x = 1; var y = 1 var z = x + y;
- 使用逗号操作符
var z = (x=1, y = 1, x+ y)
当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号操作符
原文地址:https://segmentfault.com/a/1190000017524386
相关推荐
-
ElementUI的Table组件中的renderHeader方法研究 框架
2018-12-17
-
sequelize-auto生成sequelize所有模型 框架
2019-9-6
-
Vue – Table表格渲染上千数据优化 框架
2019-3-6
-
Nginx 支持单域名多 Vue 服务配置备忘 框架
2019-6-29
-
vue-router query和params传参(接收参数)$router $route的区别 框架
2018-11-14
-
浅谈 Angular 项目实战 框架
2019-3-26
-
WebSocket 探秘 框架
2017-12-12
-
Vue的H5页面唤起支付宝支付 框架
2019-4-19
-
实现一个mvvm 框架
2018-7-30
-
React 生命周期函数 框架
2019-10-9