当前位置: 首页 > news >正文

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)
当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号操作符

相关文章:

  • 用jquery写贪吃蛇
  • 解析Vue-router相关基础知识及工作原理
  • 订单的业务流程
  • 序列化与反序列化
  • java~@Async异步功能
  • 给Prometheus造假数据的方法
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • java Concurrent包学习笔记(六):Exchanger
  • 理解 Web 中的Session
  • bzoj3295: [Cqoi2011]动态逆序对
  • 北大、微软提出NGra:高效大规模图神经网络计算
  • SQL Server事务日志管理的进阶,第5级:在完全恢复模式下管理日志
  • zabbix3.4 端口和进程监控配置
  • Java 面试之技术框架
  • db cursor
  • python3.6+scrapy+mysql 爬虫实战
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 0基础学习移动端适配
  • js正则,这点儿就够用了
  • LeetCode29.两数相除 JavaScript
  • mysql_config not found
  • Spring Boot MyBatis配置多种数据库
  • webgl (原生)基础入门指南【一】
  • 工作中总结前端开发流程--vue项目
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 浅谈web中前端模板引擎的使用
  • 如何编写一个可升级的智能合约
  • 终端用户监控:真实用户监控还是模拟监控?
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • $.ajax()参数及用法
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (2015)JS ES6 必知的十个 特性
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (备忘)Java Map 遍历
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转载)利用webkit抓取动态网页和链接
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .Net程序帮助文档制作
  • .net对接阿里云CSB服务
  • /bin、/sbin、/usr/bin、/usr/sbin
  • :O)修改linux硬件时间
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [100天算法】-实现 strStr()(day 52)
  • [android] 天气app布局练习
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)