现在的位置: 首页 > web前端 > 正文

你经常会用到的ES6核心知识(下)

2020年02月12日 web前端 ⁄ 共 1730字 ⁄ 字号 评论关闭

上篇文章我们主要介绍了ES6的6个主要特性,本文将继续学习第二部分的两个特性Promise和模块导入导出,并且在最后还给大家介绍如何使用Babel工具将ES6代码转换成ES5格式代码。

7.Promise

Promise/A+规范, 规定Promise对象是一个有限状态机。它有三个状态:

pending(执行中)

Resolved(已完成)

Rejected(已失败)

其中pending为初始状态,Resolved和rejected为结束状态(表示promise的生命周期已结束)。

使用两个then是异步编程串行化,避免了恐怖的回调:

var wait1000 = new Promise(function(resolve, reject) { setTimeout(resolve, 1000); }); wait1000 .then(function() { console.log("Hello"); // 1秒后输出"Hello" return wait1000; }) .then(function() { console.log("Fundebug"); // 2秒后输出"Fundebug" });


8.模块化export和import

ES6中使用export与import关键词实现模块化。

export用于对外输出本模块变量的接口(一般一个文件可以作为一个模块); import则用于在一个模块中加载另一个含有export接口的模块。

导出模块文件app.js:

class Human{ constructor(name) { this.name = name; } sleep() { console.log(this.name + " is sleeping"); } } function walk() { console.log('i am walking'); } function play() { console.log('i am playing'); } export { Human, walk }

模块导出了两个对象:Human类和walk函数,能被其他文件使用。而play函数没有导出,为此模块私有,不能被其他文件使用。

然后再main.js导入app.js模块。

import { Human, walk } from 'app.js';

我们可以使用关键字default,可将对象标注为default对象导出。default关键字在每一个模块中只能使用一次。

... //类,函数等 export default App;

在main.js导入app.js模块

import App from 'app.js';


ES6转码器: Babel

由于目前并不是所有的浏览器都能兼容ES6的全部特性,所以需要将ES6代码转为ES5代码,才可以在现有的环境中执行。而Babel是一个广泛使用的ES6转码器。

首先,我告诉大家可以使用Babel在线转换 https://babeljs.io/repl/

其次,我们可以在本地环境中安装Babale命令行环境。

安装和使用babel:

//1.安装babel-cli(用于在终端使用babel) npm install -g babel-cli //2.安装babel-preset-es2015插件 npm install --save babel-preset-es2015 //3.在当前目录下建立文件.babelrc,接着在文件中写入: {  "presets": ['es2015'] } //4.命令行使用实例:将es6.js转换后输出到es5.js文件中 babel es6.js -o es5.js

其实,我们基于一些前端框架的开发环境如Vue等,他们脚手架工具都带有类似babel的工具了,如果你用了vue这样的框架,只管写ES6代码,不用担心转换问题了。


总结

目前ES2017(ES8)也出来了,天啦,ES6还没搞完呢,但是我们不难发现,ES7ES8也好,他们都是在ES6标准的基础上再作文章,所以先老老实实学好ES6,掌握好ES6的语法特性。

参考链接:

ECMAScript 6 入门: http://es6.ruanyifeng.com/

babel官网:http://babeljs.io/

以上就上有关你经常会用到的ES6核心知识(下)的相关介绍,要了解更多javascript内容请登录学步园。

抱歉!评论已关闭.