eslint是什么_ESLint进阶指南

前言

今天这篇文章,主要聊聊什么是ESLint,为什么要用它?它的实现原理是什么?工作中如何使用的ESLint,以及如何自定义ESLint规则。

本文整理自以下文章:

  • 掘金:eslint工作原理探讨

  • 手摸手教你写eslint插件

  • 慕课网:《大前端》第七周「团队协作」

什么是ESLint & 为什么使用它

为什么要使用ESLint?

JavaScript是一个动态的弱类型语言,在代码编写的过程中,经常会出错,而因为其没有编译程序,为了寻找代码错误的地方,需要在执行的过程中不断的调试。

ESLint的作用就是让你在开发过程中发现自己的代码问题以及不规范的地方,提前发现问题所在,并且可以规范团队的代码风格保持一致。

什么是ESLint?

ESlint是一个开源的JS代码检查工具,它的目标是提供一个插件化的JavaScript代码检测工具。

ESLint 的核心就是其中包含的各种规则,这些规则大多为众多开发者经验的结晶:

  • 有的可以帮我们避免错误;

  • 有的可以帮我们写出最佳实践的代码;

  • 有的可以帮我们规范变量的使用方式;

  • 有的可以帮我们规范代码格式;

  • 用的可以帮我们更合适的使用新的语法;

总的来说,ESLint是一套每一个人都应该了解的并且遵循的JS代码规范。它可以让我们的代码风格一致、更加健壮、减少错误并用上社区的最佳实践。

原理

在许多方面,它和 JSLint、JSHint 相似,除了少数的例外:

  • ESLint 使用 Espree 解析 JavaScript。

  • ESLint 使用 AST 去分析代码中的模式

  • ESLint 是完全插件化的。每一个规则都是一个插件并且你可以在运行时添加更多的规则。

AST是Abstract Syntax Tree(抽象语法树)的缩写,如下图。

daebe8daf60c599fd1d81680e9abd1f0.png

也就是说,eslint使用Espress把js语法转换成AST。然后通过 AST selectors找到静态代码中的内容,再根据rule的规则去判断这一段js是否符合eslint的规范。

安装和初始化ESlint

新建一个空的文件夹,执行以下的命令:

1、 npm init -y

2、 npm install eslint -D

3、 npx eslint --init

e660f33c3c8d8185c264c5a619941855.png

完成以上的步骤,我们将会得到以下的文件夹:

68f514cd89e7b98b4daba7b61bccae66.png

rule是如何工作的?

ESLint 的核心就是规则(rule),每条规则都是独立的,且都可以被设置为禁止off,警告warn,或者报错error

我们选择"no-debugger": "error" 来看看 rule 是如何工作的。源码如下:

module.exports = {
    meta: {
        type: "problem",
        docs: {
            description: "disallow the use of `debugger`",
            category: "Possible Errors",
            recommended: true,
            url: "https://eslint.org/docs/rules/no-debugger"
        },
        fixable: null,
        schema: [],
        messages: {
            unexpected: "Unexpected 'debugger' statement."
        }
    },
    create(context) {
        return {
            DebuggerStatement(node) {
                context.report({
                    node,
                    messageId: "unexpected"
                });
            }
        };
    }
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值