(TODO)ESLint规范
如何使用ESLint
本地全局安装后,先通过npm init初始化项目,然后通过eslint –init,交互式的填写信息,即可为你生成一个.eslint配置文件
JS编码规范
公司的规范
详见这个文档,由架构组的同事王一帆编写。
airbnb
https://github.com/airbnb/javascript
这是爱彼迎(美国短租平台)的编码规范,是github上star最多的标准,具体内容尚待阅读。文档里面给每一种规范都注明了原因。
这里不光有规范,还有很多编程技巧,很值得一看。
standard
https://github.com/standard/standard
关于规范的讨论
Expected linebreaks to be ‘LF’ but found ‘CRLF’.
VSCode右下角点击可以给当前文件设置文件风格
如需全局设置,可以打开setting,将files.eol设置为\n或者\r\n
const
初始化后没有变更的变量,都用const定义。
缩进到底4个空格还是2个空格?
2个空格缩进
1 | |
一般来说如果一个语言可能导致的缩进层次很多的话,缩进的空格就会减少,这样才能最大限度避免自动折行和行过长问题。。。
像C这样的语言,默认缩进只有一层,也就是函数体,绝大部分代码都是写在函数体内,缩进空格加长也能避免程序员写出各种莫名其妙的控制流语句嵌套(for嵌for,if嵌if),过多的嵌套层次是邪恶的,应该抽出成为独立的函数。
到了C#/Java这样的语言,默认缩进层次一下子就增加到了三层,命名空间,类,方法,如果这个时候还采用8空格缩进,那么基本上有用的代码在第24个字符的地方才会出现,一般一个屏幕一行显示80-120个字符,那么意味着基本上1/3-1/4个屏幕都是空白的,这是巨大的浪费,所以这些语言的程序员和规范,都不可能再采用8空格缩进,以4空格缩进和2空格缩进居多。
如何通过代码美化插件自动调整整个文件的缩进?
如何修改tab缩进的空格数?
字符串用单引号还是双引号?
用单引号
1、方便插入html(html里面的节点属性一般都是用双引号)
2、随大流,国外的code,大部分都是用单引号
函数必须先定义,后使用
没有用到的参数,应该以下划线开头命名
不要用+连接字符串,用`来连接
匿名函数全部通过箭头函数的形式来定义,不要用function定义
匿名函数的参数必须加中括号
???
调用属性,不要用中括号,用点号
行末加不加分号?
加。避免ASI在判断一行是否结束时出现问题。
Why? When JavaScript encounters a line break without a semicolon, it uses a set of rules called Automatic Semicolon Insertion to determine whether or not it should regard that line break as the end of a statement, and (as the name implies) place a semicolon into your code before the line break if it thinks so. ASI contains a few eccentric behaviors, though, and your code will break if JavaScript misinterprets your line break. These rules will become more complicated as new features become a part of JavaScript. Explicitly terminating your statements and configuring your linter to catch missing semicolons will help prevent you from encountering issues.
配置文件
package.json
1 | |
.eslintrc
1 | |
no-commented-out-code(不允许注释掉的代码)
需要借助第三方包来实现:
https://github.com/cartant/eslint-plugin-etc/
验证
类似这样命令行验证:
1 | |
配置检查规则
可以参考这个项目:
https://github.com/wang1212/eslint-config
将规则打包为npm包,然后给项目复用。
项目中只需要安装该包,然后配置对应的插件即可:
1 | |
配置TypeScript和JavaScript混合项目
通过overrides进行配置,参考上面的.eslintrc的示例。
常见问题
如何关闭检查?
关闭整个eslint:
在file -> preferences -> settings中,搜索eslint,将enable配置改为false即可。
如果你发现安装了eslint,但是没有生效,也可以检查下是不是这个配置导致的。
关闭当前文件:
1 | |
关闭代码块:
1 | |
关闭当前行:
1 | |
关闭下一行:
1 | |
怎么关闭console检查?
1 | |
如何引入jquery?
在.eslintrc.js中添加如下内容:
1 | |
ESLint不生效
我遇到一种情况,是我的.eslintrc.js配置文件写错了,我为了不强制返回return,加了这么一行:
1 | |
结果就导致整个ESLint不生效了,折腾半天也没找到原因,VSCode没有任何提示。后来我命令行eslint xxx.js测试了下,才发现是配置有误。
正确的应该是这样(可以看到,我前面连配置的键名都配错了……):
1 | |
需要注意,ESLint禁用某个配置,不是写false,而是写0:
Severity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed ‘false’).