JavaScript ESLint插件保姆级使用教程

目录
  • 一文带你了解 ESLint
  • 安装
  • 配置
  • React 插件
  • Airbnb 的配置

一文带你了解 ESLint

在平时开发中,我们总是希望尽可能写出最佳代码,但有时总会出错,然后需要花数小时定位 bug,最后发现只是拼写错误,这很令人沮丧。好在一些工具可以帮助我们在输入过程中检查代码的正确性。这些工具无法表明代码能否实现预期效果,但可以帮助我们避免语法错误。

如果之前使用过 C#这种静态语言,那么你应该很熟悉 IDE 给出的这种警告信息。 Douglas Crockford 开发的 JSLint(最初发布于 2002 年)使得 JavaScript 代码检查变得流行起来。后来出现了 JSHint,如今 ESLint 成为了 React 领域的事实标准。 ESLint 是 2013 年发布的开源项目,由于其配置化程度高且扩展性良好,逐渐流行起来。

在 JavaScript 生态系统中,各种库和技术都变化迅速,因此关键是要找到一个可以方便地使用插件来扩展的工具,并且可以按需启用或禁用规则。最重要的是,如今我们普遍使用 Babel 这样的转译器,以及尚未归入 JavaScript 标准版本的试验特性,因此需要让 linter 知道源代码文件遵循了哪些规则。

linter 不仅能帮助我们更少犯错,或者至少更早发现错误,它还能强制推行一些常见的编程风格指南。这一点非常重要,尤其是开发者众多的大型团队中的每个人都有自己偏爱的编程风格。如果以不同风格编写代码库中的不同文件,甚至不同函数,那么这些代码将难以阅读。

安装

首先,执行以下命令来安装 ESLint:

npm install --global eslint 

可执行程序安装完成后,就可以用以下命令来运行它:

eslint test.js 

输出结果会告诉我们文件中是否有错。 安装后首次运行不会看到任何报错,因为它各方面都需要配置,一开始并不包含任何默认规则。

配置

现在我们开始配置 ESLint。可以使用位于项目根目录的 .eslintrc 文件来配置 ESLint。

使用 rules 属性来添加规则。举例来说,创建 .eslintrc 文件并禁用分号:

{
   "rules": {
     "semi": [2, "never"]
   }
}

上述配置文件的含义是:"semi" 是规则名,[2, "never"] 是规则的值。一开始看到这种配置会觉得不够直观。 ESLint 规则具有决定问题严重程度的三个等级。

  • off(或者 0):禁用规则
  • warn(或者 1):规则会产生警告
  • error(或者 2):规则会抛出错误

将规则的值设为 2,因为我们希望当代码不符合规则时,ESLint 会抛出错误。

第二个参数将 ESLint 配置为不允许代码中使用分号(相反值为 always)。 ESLint 及其插件都有详细的文档,你可以找到任意一条规则的描述及其通过或失败的示例。 现在新建一个文件并写入以下代码。

var foo = 'bar'; 

注意:此处使用了 var 关键词,因为 ESLint 还不知道我们要用 ES2015 语法来编码。

执行 eslint test.js 后,就会看到以下提示: Extra semicolon (semi)

linter 搭建完毕,它帮助我们遵循了第一条规则。可以手动启用或禁用每条规则,也可以一步启用推荐配置,只需要在 .eslintrc 中添加以下代 码即可。

{
  "extends": "eslint:recommended"
}

extends 属性表明我们将沿用 ESLint 的推荐配置,另外我们也可以手动修改 .eslintrc 的 rules 属性来覆盖每条规则,正如前文所做的那样。 启用推荐规则后,再次运行 ESLint,此时不会看到与分号相关的任何报错(推荐配置中不包括这个部分),但 linter 会提示声明过的 foo 变量从未使用。

no-unused-vars 规则对于保持代码简洁非常有用。 一开始提过,我们希望用 ES2015 语法编写代码,但是以下代码会报错:

const foo = 'bar' 

报错信息如下所示:

Parsing error: The keyword 'const' is reserved

因此,要想启用 ES2015 语法,需要添加配置选项:

"parserOptions": { 
  "ecmaVersion": 6, 
}

添加完毕后,就只剩下变量未使用的报错提示了,这是正常的。最后使用以下配置来启用 JSX 语法:

"parserOptions": {
  "ecmaVersion": 6,
  "ecmaFeatures": {
    "jsx": true
  }
},

如果你之前开发过 React 应用却从未使用 linter,现在要想学习规则并开始习惯,那么最好运行 ESLint 来检查源代码并修复所有问题。

用 ESLint 帮助我们编写更好的代码的方式有很多种。一种是前文的做法:在命令行中运行 ESLint,并得到一系列错误提示。这种做法可行,但一直手动执行不够方便。更好的做法是在编辑器中加入检查流程,这样输入代码时就能立刻得到反馈。VS Code、Sublime Text、Atom 以及其他流行的编辑器都提供了 ESLint 插件来实现这个目的。

在真实的开发场景中,手动运行 ESLint 或者让编辑器实时提供反馈非常有用,但是还不够,因为我们会遗漏某些错误或警告,甚至是直接无视。为了避免代码库中出现未检查的代码,我们可以将 ESLint 作为开发流程中的一环。举例来说,可以在测试时执行检查,如果代码不符合检查规则,那么整个测试步骤就算失败。 另一个方案是在发起 pull request 前进行代码检查,这样在同事开始审查前还有机会整理代码。

React 插件

前文提过,ESLint 流行起来的主要原因是其可以用插件进行扩展,对我们最重要一个插件是 eslint-plugin-react

ESLint 不需要任何插件就能解析 JSX(启用配置开关即可),但我们想要更多功能。要想使用该插件,需要先进行安装:

npm install --global eslint-plugin-react 

安装完成后,在配置文件中添加以下代码,以便 ESLint 可以使用它:

"plugins": [
  "react"
]

与 ESLint 一样,没有配置规则的情况下它什么都不会做,我们可以启用推荐配置来激活基础规则集。

在 .eslintrc 文件中更新 "extends" 属性,如下所示:

"extends": [
  "eslint:recommended",
  "plugin:react/recommended"
],

如果出现编写错误,比如 React 组件的同一个属性写了两次,那么就会出现错误提示:

<Foo bar bar /> 

以上代码会返回如下所示的错误提示:

No duplicate props allowed (react/jsx-no-duplicate-props)

大量规则可以用于项目。我们来了解其中一部分。例如按照元素的树结构缩进 JSX 代码有助于提升可读性。 如果代码库及组件的缩进风格不一致,则会出现问题。 我们来查看一个示例,了解一下 ESLint 如何帮助团队的每个成员遵循风格指南,而又无须死记硬背。

注意:这种情况下的不正确缩进实际上不算错误,代码还是能够正常运行的;这只是一致性问题。

首先,激活以下规则:

"rules": { 
  "react/jsx-indent": [2, 2] 
}

第一个 2 表示如果代码不符合规则,则 ESLint 应该给出错误提示,第二个 2 则表示每个 JSX 元素应该缩进两个空格。因为 ESLint 不会做任何决定,所以启用哪条规则完全取决于你自己。甚至可以通过设置第二参数为 0 来选择无缩进风格。

编写以下代码:

<div>
<div />
</div>

ESLint 会给出以下报错信息:

Expected indentation of 2 space characters but found 0 
(react/jsx-indent)

换行书写属性值时也有类似的规则来约束缩进。属性过多或过长时,较好的做法是换行书写。要想推行属性根据元素名缩进两个空格的格式,启用以下规则即可:

"react/jsx-indent-props": [2, 2]

至此,如果属性没有缩进两个空格,那么 ESLint 就会报错。

问题在于,如何界定一行代码过长?多少个属性算多?每个开发人员都有不同的看法。ESLint 的 jsx-max-props-per-line 规则有助于维护一致性,这样每个组件的编写方式就相同了。

ESLint 的 React 插件提供的规则不仅有助于写出更优雅的 JSX 代码,也有助于写出更好的 React 组件。举例来说,可以强制要求属性类型按照字母表顺序排列、使用未声明的属性时给出错误提示,或者要求尽量编写无状态的函数组件,而不要使用类等。

Airbnb 的配置

我们已经了解了 ESLint 如何通过静态分析来发现错误,以及如何促使我们在整个代码库中遵循一致的风格指南。我们也见识到了 ESLint 的灵活之处,以及如何通过配置与插件来扩展它。

ESLint 的 extends 属性非常强大,因此你可以从第三方配置入手,再添加自己特有的规则。 React 领域最流行的配置之一莫过于 Airbnb 的那一套。Airbnb 的开发者按照 React 的最佳实践创建了一套规则集,你可以直接在代码库中使用,无须自己手动判断启用哪条规则。

在使用 eslint --init 后,会出现很多用户配置项,经过一系列一问一答的环节后,你会发现在你文件夹的根目录生成了一个 .eslintrc.js 文件。其中便可以选择继承 Airbnb。

读者若想了解跟多ESLint,请查看官方文档:ESLint - 插件化的 JavaScript 代码检测工具

到此这篇关于JavaScript ESLint插件保姆级使用教程的文章就介绍到这了,更多相关JS ESLint插件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解js静态检查工具eslint配置文件

    ESLint 是一个 Javascript 静态检查工具,它可以帮你养成良好的编程习惯 { // 环境定义了预定义的全局变量. "env": { //环境定义了预定义的全局变量.更多在官网查看 "browser": true, "node": true, "commonjs": true, "amd": true, "es6": true, "mocha": true

  • js代码规范之Eslint安装与配置详解

    什么是 ESLint ESLint(中文站点)是一个开源的 JavaScript 代码检查工具,使用 Node.js 编写,由 Nicholas C. Zakas 于 2013 年 6 月创建.ESLint 的初衷是为了让程序员可以创建自己的检测规则,使其可以在编码的过程中发现问题而不是在执行的过程中.ESLint 的所有规则都被设计成可插入的,为了方便使用,ESLint 内置了一些规则,在这基础上也可以增加自定义规则. 一.Eslint安装 1.全局安装 如果你想使 ESLint 适用于你所有

  • JS代码检查工具ESLint介绍与使用方法

    ESLint不但提供一些默认的规则,也提供用户自定义规则来约束所写的JavaScript代码. 发展历史 Douglas Crockford大神根据自己的理念用JavaScript写了一个JavaScript代码规范检查工具,这就是JSLint.后来非常流行,也的确帮助了广大的JavaScript程序员.但是,大神对于自己的代码规范不做丝毫的妥协,对开源社区的反馈的回应也不礼貌.于是,JSLint从一个帮助程序员规范代码,避免Bug的工具,变成了一个让代码像Crockford的工具.在最不信神的

  • JavaScript ESLint插件保姆级使用教程

    目录 一文带你了解 ESLint 安装 配置 React 插件 Airbnb 的配置 一文带你了解 ESLint 在平时开发中,我们总是希望尽可能写出最佳代码,但有时总会出错,然后需要花数小时定位 bug,最后发现只是拼写错误,这很令人沮丧.好在一些工具可以帮助我们在输入过程中检查代码的正确性.这些工具无法表明代码能否实现预期效果,但可以帮助我们避免语法错误. 如果之前使用过 C#这种静态语言,那么你应该很熟悉 IDE 给出的这种警告信息. Douglas Crockford 开发的 JSLin

  • Python clip与range函数保姆级使用教程

    目录 一.range函数的定义 二.range函数实例 省略起始值start和步长step 设置初始值终值和步长 三.random.randint函数的定义 四.random.randint函数实例 随机生成5个[0, 6)之间的整数 随机生成[-2, 9)之间1维数组 随机生成[5, 10)之间的3行5列数据框 五.clip函数的定义 六.clip函数实例 把数组中的值应用clip函数进行截取 把数据框中的值应用clip函数进行截取 你应该听说过,应用Python,可以让你处理一天的重复工作量

  • Python where函数保姆级使用教程

    目录 一.where函数的定义 二.where函数实例 找出数列中大于某个数的位置索引 数列中大于5取‘m_5’否则取’lq_5’ 数列中小于5取一个值否则取另一个值 数列中是2的倍数取一个值否则取另一个值 找出数据框中非0数据‍ 你应该听说过,应用Python,可以让你处理一天的重复工作量,缩短到几分钟甚至更短.从此解放上班时间,研究更多更有效率的工作方法.进一步提升工作效率,让工作更出彩.这不是广告,这是实锤图片. 本文和你一起探索Python常用函数合集,让你以最短的时间明白这些函数的原理

  • Python lambda函数保姆级使用教程

    目录 一.lambda函数的定义    二.lambda函数实例 lambda函数和普通函数对比 求一个一元二次方程 和高阶函数filter配合使用 和sorted函数配合使用 你应该听说过,应用Python,可以让你处理一天的重复工作量,缩短到几分钟甚至更短.从此解放上班时间,研究更多更有效率的工作方法.进一步提升工作效率,让工作更出彩.这不是广告,这是实锤图片. 一.lambda函数的定义    lambda函数是Python中常用的内置函数,又称为匿名函数.和普通函数相比,它只有函数体,省

  • Python Map函数保姆级使用教程

    https://blog.csdn.net/qq_32532663/article/details/125246898?spm=1001.2014.3001.5502

  • VSCode中ESLint插件修复以及配置教程

    目录 vscode+eslint插件+配置教程 如果不好用 排查1: 如果出现后面回车符问题 排查2: 保存时好了但是一瞬间代码又回来了 排查3: 右下角是否开启eslint服务 排查4: 如果保存还是变回去了 排查5: ESLint不生效 排查6: 如果都用心走了一遍, 还不行 总结 vscode+eslint插件+配置教程 1.打开项目, 必须让Vscode左侧工作区根目录是项目文件夹, 确保根目录下(第一级)有eslintrc.js / package.json中有eslint相关配置.

  • JavaScript插件化开发教程 (一)

    一,开篇分析 Hi,大家!今天这系列文章主要是说说如何开发基于"JavaScript"的插件式开发,我想很多人对"插件"这个词并不陌生, 有的人可能叫"组件"或"部件",这不重要,关键是看如何设计,如何做一个全方位的考量,这是本文的重点阐述的概念.我想大家对 "jQuery插件的方式"有一定的了解,我们结合这个话题一起讨论一下,最终给出相关的实现方案,来不断提高自己的谁能力. 二,进入插件正题 一般来说,j

  • VSCode的使用配置以及VSCode插件的安装教程详解

    配置篇 打开设置界面 许多设置都需要在设置界面进行,所以想要配置第一步就应该是打开设置界面. 1> 鼠标操作打开.File --> Preferences --> Settings 2> 界面左下角的设置图标 打开设置有的是代码视图,有的不是,可以通过设置右上角的三个点进行切换. tab键的缩进控制 VSCode默认的tab键是缩进4个空格,但是有很多时候我们需要修改这个缩进,如vue用ES6的时候缩进4个空格会报错,这里我们就可以修改这个配置. 首先就是打开设置 直接搜索 tab

  • jQuery插件datatables使用教程

    jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序.浏览器分页.服务器分页.筛选.格式化等功能. 如何把数据库中的数据以表格的形式展示到前端,实现有很多方法,最近用jquery的datatables插件来实现了发现还是比较简单的,今天我们来看一个例子,来说明这个插件的使用,基本原理是view函数从数据库中读出数据,jquery通过ajax获取数据并在前端展示出来,我们先定义一个models.py,如下: from django.dbimport models

  • Node.js插件安装图文教程

    Node.js简介 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好.Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好. Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式

随机推荐