了解ESlint和其相关操作小结

vue-cli脚手架创建的项目默认使用ESlint规则,启动项目的时候因为各种语法报错,不得不先停下了解一下什么是ESlint,及其相关的一下操作。

【使用vue-cli快速搭建项目】:https://www.freexyz.cn/article/140498.htm

1. 什么是ESlint?

ESLint 是一个ECMAScript/JavaScript 语法规则和代码风格的检查工具,它的目标是保证代码的一致性和避免错误。

【ESlint 中文官方网站】:http://eslint.cn/

2. ESlint规范

你可以通过下面的列表大概了解ESlint的风格,确实与一般的开发习惯不太相同。

\"no-bitwise\": 0,//禁止使用按位运算符
\"no-catch-shadow\": 2,//禁止catch子句参数与外部作用域变量同名
\"no-class-assign\": 2,//禁止给类赋值
\"no-cond-assign\": 2,//禁止在条件表达式中使用赋值语句
\"no-console\": 2,//禁止使用console
\"no-const-assign\": 2,//禁止修改const声明的变量
\"no-constant-condition\": 2,//禁止在条件中使用常量表达式 if(true) if(1)
\"no-continue\": 0,//禁止使用continue
\"no-control-regex\": 2,//禁止在正则表达式中使用控制字符
\"no-debugger\": 2,//禁止使用debugger
\"no-delete-var\": 2,//不能对var声明的变量使用delete操作符
\"no-div-regex\": 1,//不能使用看起来像除法的正则表达式/=foo/
\"no-dupe-keys\": 2,//在创建对象字面量时不允许键重复 {a:1,a:1}
\"no-dupe-args\": 2,//函数参数不能重复
\"no-duplicate-case\": 2,//switch中的case标签不能重复
\"no-else-return\": 2,//如果if语句里面有return,后面不能跟else语句
\"no-empty\": 2,//块语句中的内容不能为空
\"no-empty-character-class\": 2,//正则表达式中的[]内容不能为空
\"no-empty-label\": 2,//禁止使用空label
\"no-eq-null\": 2,//禁止对null使用==或!=运算符
\"no-eval\": 1,//禁止使用eval
\"no-ex-assign\": 2,//禁止给catch语句中的异常参数赋值
\"no-extend-native\": 2,//禁止扩展native对象
\"no-extra-bind\": 2,//禁止不必要的函数绑定
\"no-extra-boolean-cast\": 2,//禁止不必要的bool转换
\"no-extra-parens\": 2,//禁止非必要的括号
\"no-extra-semi\": 2,//禁止多余的冒号
\"no-fallthrough\": 1,//禁止switch穿透
\"no-func-assign\": 2,//禁止重复的函数声明
\"no-implicit-coercion\": 1,//禁止隐式转换
\"no-implied-eval\": 2,//禁止使用隐式eval
\"no-inline-comments\": 0,//禁止行内备注
\"no-invalid-regexp\": 2,//禁止无效的正则表达式
\"no-label-var\": 2,//label名不能与var声明的变量名相同
\"no-labels\": 2,//禁止标签声明
\"no-lone-blocks\": 2,//禁止不必要的嵌套块
\"no-lonely-if\": 2,//禁止else语句内只有if语句
\"no-loop-func\": 1,//禁止在循环中使用函数(如果没有引用外部变量不形成闭包就可以)
\"no-multi-spaces\": 1,//不能用多余的空格
\"no-multi-str\": 2,//字符串不能用\\换行
\"no-multiple-empty-lines\": [1, {\"max\": 2}],//空行最多不能超过2行
\"no-native-reassign\": 2,//不能重写native对象
\"no-negated-in-lhs\": 2,//in 操作符的左边不能有!
\"no-nested-ternary\": 0,//禁止使用嵌套的三目运算
\"no-new\": 1,//禁止在使用new构造一个实例后不赋值
\"no-new-func\": 1,//禁止使用new Function
\"no-new-object\": 2,//禁止使用new Object()
\"no-new-require\": 2,//禁止使用new require
\"no-new-wrappers\": 2,//禁止使用new创建包装实例,new String new Boolean new Number
\"no-obj-calls\": 2,//不能调用内置的全局对象,比如Math() JSON()
\"no-octal\": 2,//禁止使用八进制数字
\"no-octal-escape\": 2,//禁止使用八进制转义序列
\"no-param-reassign\": 2,//禁止给参数重新赋值
\"no-path-concat\": 0,//node中不能使用__dirname或__filename做路径拼接
\"no-plusplus\": 0,//禁止使用++,--
\"no-process-env\": 0,//禁止使用process.env
\"no-process-exit\": 0,//禁止使用process.exit()
\"no-proto\": 2,//禁止使用__proto__属性
\"no-redeclare\": 2,//禁止重复声明变量
\"no-regex-spaces\": 2,//禁止在正则表达式字面量中使用多个空格 /foo bar/
\"no-restricted-modules\": 0,//如果禁用了指定模块,使用就会报错
\"no-return-assign\": 1,//return 语句中不能有赋值表达式
\"no-script-url\": 0,//禁止使用javascript:void(0)
\"no-self-compare\": 2,//不能比较自身
\"no-sequences\": 0,//禁止使用逗号运算符
\"no-shadow\": 2,//外部作用域中的变量不能与它所包含的作用域中的变量或参数同名
\"no-shadow-restricted-names\": 2,//严格模式中规定的限制标识符不能作为声明时的变量名使用
\"no-spaced-func\": 2,//函数调用时 函数名与()之间不能有空格
\"no-sync\": 0,//nodejs 禁止同步方法
\"no-ternary\": 0,//禁止使用三目运算符
\"no-trailing-spaces\": 1,//一行结束后面不要有空格

更全面的了解ESlint规则建议点这里 :

【ESlint 官方规则列表】:http://eslint.cn/docs/rules/

3.如何根据ESlint规则修改代码?

每次改动后启动项目,ESlint都会检测你的代码,然后在浏览器的控制台疯狂报错。一开始我是根据控制台的报错信息,一条一条回去修改的,但是这样的方式太低效。后来同事告诉我一种高效的方式,可以直接让开发工具(webstorm or idea)识别ESlint,并且格式代码,过程是这样的:

Setting ->Preferences -> Languages & Frameworks -> JavaScript -> Code Quality Tools -> Eslint ,然后勾选Enable单选框。

了解ESlint和其相关操作小结

配置ESlint

勾选后你就会发现,idea和webstorm会通过红色的下划线来告诉你,什么地方不符合ESlint规则。这使我们能在开发过程中,就根据ESlint规则修改代码,而不是等到运行项目后,通过控制台才发现语法错误。

了解ESlint和其相关操作小结

ESlint规则提示

除了此之外,idea和webstorm还能一键格式化,让代码按照ESlint规则自动调整。在有语法错误的文件右击,然后点击Fix ESint就好了:

了解ESlint和其相关操作小结

一键格式化

4.如何关闭ESlint语法检测?

这个很简单,build –> webpack.base.conf.js,然后注释掉图片所指那段代码,就可以了。

了解ESlint和其相关操作小结

关闭ESlint语法检测

// test: /\\.(js|vue)$/,
 // loader: \'eslint-loader\',
 // enforce: \'pre\',
 // include: [resolve(\'src\'), resolve(\'test\')],
 // options: {
 //  formatter: require(\'eslint-friendly-formatter\'),
 //  emitWarning: !config.dev.showEslintErrorsInOverlay
 // }

去了解如何关闭ESlint检测,是因为一直在报错,挺烦的。

但是比较深入的了解完ESlint后,个人感觉还是挺有必要使用的,对于共同开发,维护代码有这很好的作用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容