vue 字符串拼接_Vue 中必会的 ES6 知识点

目录

  1. let / const
  2. 解构赋值
  3. 箭头函数
  4. 模板字符串
  5. async / await (ES 2017)
  6. 模块导入 / 导出

以上排名不分先后~

都!很!重!要!

let / const

letconst 出现之前,js 中定义变量的关键字只有 var,不过 var 有一个缺点,没有块级作用域

比如下面这段代码:

172f5724bc06d081c6257a8bcfee5d8f.png

我们运行一下,控制台的输出结果会是这样:

8360341833da61f6045f16d93d7a2566.png

我们可以看到,在 for 循环中定义的变量 i,我们在循环体之外还能访问,这个特性是我们不想看到的。

我们用 let 定义变量来试试:

755fb8a2a50c783a586118ff3319d745.png

再次运行一下,我们看看控制台输出了啥:

12ec6e45ea7bccbea71580eb8083487a.png

我们可以看到,这次我们在 for 语句之外访问 i 变量就抛出了错误——i is not defined

再说说 const

首先,const 定义的变量和 let 一样,都是有块级作用域的。

其次,const 用于定义常量,用 const 定义的变量不允许之后再修改了。

举个例子:

4f894dd41039965f3c74b1ae02531101.png

运行下代码:

53e6e8346d755094da473c0905c65d56.png

可以看到,我们试图修改 const 定义的变量时,js 抛出了错误。

总之记住一句话:最佳实践是默认使用 const,只在确实需要改变变量的值时使用 let

解构赋值

解构赋值可以方便的从数组或者对象中取数据,我们看个例子:

75e107d104087403f25f384381bc1dae.png

没有解构赋值之前,我们想要从一个对象中取出属性,只能像上面这样写。

我们再来看看解构赋值的写法:

d5aefdc02effd82c13543aa772e3867e.png

这就是解构赋值的魅力!上面是利用解构赋值从对象中取数据,我们再来看看在数组上的应用:

3152da788c1c07905135a9c914a95423.png

箭头函数

箭头函数也算是vue中用的非常多的一个ES6知识点了,有以下一些写法:

0174b1e7fc96db35ee895881565aee91.png

箭头函数除了写法比较简洁之外,最大的好处还是箭头函数内部的 this 永远指向的是定义时所在的对象,这使得我们不用定义额外的变量来保存 this。看一个 this 结合 Promise 的例子:

17c6217bbb514382341be9772b9b6689.png
ES5写法

e1bb399ff384d4e43e75a3138d111ff3.png
ES6写法

两者一对比,是不是发现ES6的写法简洁了很多呢?

模板字符串

模板字符串是vue中使用非常频繁的一个操作了,用来替代非常容易出错的字符串拼接操作:

297b732cce00111cde4827b54e7b9cbd.png

可以看到,相比于字符串拼接的方式,模板字符串的可读性大大的提高了。

在vue中,我们经常使用字符串模板,来给元素设置动态属性值:

73e01d5d1441ae3b9c8d005ca595741e.png

async / await

async/ await 可以说是 js 中异步编程的终极解决方案了。

在 vue 的日常开发过程中,我们经常需要在 mounted 生命周期中获取服务器数据,现在写起来最舒服的方式就是 try / catch + async / await 的写法了。这种写法写起来像同步的写法,并且错误处理写起来也很直观:

e63a8c66d6ba9f1fee7814726714556e.png

模块导入导出

模块化机制能让我们将方便的将代码拆分为独立的模块,模块通过 export 暴露对外的接口,通过 import 语句引用其他模块的代码。

这在vue中非常常用,vue的单文件写法就依赖ES6的模块导入导出机制:

7e5ae2fd1591b924d303c576aa73cd69.png

通过ES6的模块导入导出机制,我们可以在一个.vue单文件,定义好关于一个vue组件的一切。