ESLint - 构建强壮的Javascript代码

我记得10年前,我用Javascript只是为了补充一下Asp.net上AjaxControl的动态数据加载,而现在Javascript几乎成为了前端开发的主流语言。

如果仍然用10年前那种把Javascript当成小脚本的方式来完成现在的前端项目,那么任何一个项目都可能变成一个噩梦。

为什么是ESlint

众所周知,Javascript是一种动态语言,其优势很明显,缺点也众所周知(参考知乎上那些大神对Javascript的吐槽),用Javascript写出来的代码,通常靠代码走查或者运行的方式来发现其中的错误。ESLint的出现,则扭转了这种被动局面。

ESLint的配置和使用方式网上有很多,建议大家选择Airbnb的规则对代码进行检查(文章的最后给出了Airbnb规则的安装配置参考)。

基于Airbnb配置的ESLint

基于Airbnb配置的ESLint,给我们带来了如下好处:

  1. 检查import 的正确性(规则名称:import/named)
  2. 在模块内,对没有声明而使用的变量报错(规则名称:no-undef)
  3. 提出代码编写风格的建议

第1,2 两点对优化/重构代码尤其重要,第3点则能帮助我们很快了解并掌握了es6的规范,让我们看上去像一个使用es6的“老手”。(实际上,任何一门语言,都可以通过它的lint工具让你快速掌握这门语言的特性)

参考

eslint rules

eslint-config-airbnb

掘金的eslint的使用指南(非常全面的配置和使用细则,偶尔我也会去参考)

如何充分利用Airbnb的配置

import的正确性检查

Airbnb中有一个规则import/named,可以检查从其它模块中引入的变量名称是否正确。如果你是一个持续重构/改善代码的“狂热分子”,我想你已经懂了这其中的巨大价值。

libs.js

export const UpdateMemeberInfomation = (info)=>{ /* 业务代码 */ };

export const GetMemberInforamtion = (id)=>{ /* 业务代码 */ };

index.js

import { UpatMemberInforamtion } from './libs';


....

针对上面的代码,ESLint会报如下错误

 1:10  error  UpatMemberInforamtion not found in './libs'        import/named

但是,如果在libs.js中,以对象的方式导出,那么Airebnb的import/named规则就无能为力了。

const UpdateMemeberInfomation = (info) => { /* 业务代码 */ };
module.exports = {
  UpdateMemeberInfomation,
};

读到这里,我想你已经知道了该如何调整代码以利用Airbnb的配置检查带来的好处。

是的,在模块中直接导出你要导出的对象。

export const UpdateMemeberInfomation = (info)=>{ /* 业务代码 */ };

export const GetMemberInforamtion = (id)=>{ /* 业务代码 */ };

 

对没有定义而使用的变量报错

大家都知道,在Javascript的严格模式下,使用没有定义的变量或对象是要报错的,没有人会故意这么做。

这种错误的发生通常在重构代码或者键盘敲击上。

const UpdateMemberInfo = ()=>{ /* 业务代码 */};

const clickHandler = () =>{
  updateMemberInfo();
  /* 其它业务代码 */
};

对于上面的代码,ESLint会报错告诉我们哪一行代码中使用了没有被定义的变量,从而让我们在运行代码之前就发现问题。

(对于全局变量,可以将其添加到.eslintrc文件中)

 

小结

只有持续重构和优化代码才能将代码逐渐变得强壮,而“重构”和“优化”中却包含着打破原有代码完整性的风险,上面的两条Airbnb规则在很大程度上帮我们规避了这个风险,从而保证了模块间名称引用的完整性和模块内部名称使用的完整性。

有了ESLint的Airbnb配置规则的保驾护航,我们就可以将代码的持续重构和优化变成常态。从而让我们编写的Javascript变得更加强壮。

 

Airebnb规则安装配置及使用

1. 安装ESLint

ESLint我个人推荐安装在本地,然后从本地进行配置,这样不会造成后面的库可能不匹配问题

npm install --save-dev eslint

2. 通过ESLint进行配置。

node_modules/.bin/eslint --init

3. 在shell的交互模式下,我的选择如下。

> To check syntax, find problems, and enforce code style
> Javascript modules (import/export)
> React
> N
> Browser
> Use a popular style guide
> Airbnb: https://github.com/airbnb/javascript
> JavaScript

之后,ESLint会完成相关库的下载。

最后,打开项目的package.json文件,在scripts节点下添加命令。

"lint": "./node_modules/.bin/eslint --fix --fix-type suggestion,layout,problem ."

然后运行命令进行代码检查,代码格式问题ESLint会帮你修复。

npm run lint

后面在使用过程中你可能会想跳过某些文件的检查,或者调整某些规则的报警级别,这些需求可以通过修改.eslintignore, .eslintrc.js完成。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章