之前一直使用jshint,只从用上了async
、wait
这些语法糖之后,发现jshint无法识别了,于是准备换eslint
。
安装
1 | npm install eslint -g npm install babel-eslint -g |
sublime插件安装
- 安装 SublimeLinter
- 安装 SublimeLinter-contrib-eslint
配置
在项目目录下新建.eslintrc
文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{
"env": {
"browser": true,
"node": true,
"es6": true
},
"parser": "babel-eslint",
"ecmaFeatures": {
"jsx": true
},
"rules": {
"semi": [2, "always"],
"quotes": [2, "single"]
}
}
你也可以执行eslint --init
自行配置。
执行
代码执行的时候,因为这些语法糖目前都还未被支持,所以需要使用babel进行降级。
新建文件.babelrc
写入以下内容
1 | { |
新建文件package.json
写入以下内容
1 | { |
执行npm i
测试
将下面代码存于项目中的一个文本文件中,暂且命名为test.es71
2
3
4
5
6
7
8
9
10
11
12
13
14'use strict';
const async = function () {
return new Promise((resolve, reject) => {
setTimeout(() => resolve('end'), 2000);
});
};
const test = async function() {
let ret = await async();
console.log(ret);
};
test();
执行babel-node test.es7
。会在2秒后看到end
的输出。正常的项目开发中,我们还需要借助gulp等工具作为开发和发布工具。这里只做eslint示例就不再介绍。
async与generator的区别在于,generator没有自动执行的功能,需要依赖co库才能执行,async有自动执行的功能,因此可以像普通函数一样执行。