Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JSLint,JSHint,ESLint的区别 #97

Open
web-lzs opened this issue Feb 24, 2019 · 0 comments
Open

JSLint,JSHint,ESLint的区别 #97

web-lzs opened this issue Feb 24, 2019 · 0 comments

Comments

@web-lzs
Copy link
Owner

web-lzs commented Feb 24, 2019

主流的JS Lint工具及介绍
JavaScript已经发展蛮长时间了,对应的Lint工具也是层出不穷,下面介绍一下比较主流的几个Lint工具(其实是我用过的几个XD)

JSLint
JSLint是由Douglas Crockford开发的,可能是最早的JavaScript Lint工具了吧,它的名字来源于著名的C语言工具Lint。老道把他认为的非Good Parts的部分都报了warning,而且在它的文档中也提到了你应该欣然接受所有的JSLint的建议。最近看了下,老道还在持续更新着这个项目,而且官网上也有着一个在线的体验工具,可以尝试一下。对了,如果想要使用这个工具,建议看看老道在YouTube上关于JavaScript编程风格的视频,讲的还是很幽默的。

JSHint
JSHint是由Anton Kovalyov基于JSLint的代码实现的开源项目,由于JSLint时期大多数人都在受JSLint压迫,JSHint相比较之下,更友好,也更容易配置,所以很快就发展了起来,也得到了众多IDE和编辑器的支持。但是,由于它是基于JSLint开发的,自然原有的一些问题它也继承下来了,比如不易扩展,不容易直接根据报错定位到具体的规则配置等,虽然之前好像是有过相关的讨论,但是现在仍然没有什么好的解决办法。好在它发展的不错,很多时候遇到的问题都可以在网上找到相关的解决方案,而且文档也是非常不错的。

ESLint
ESLint是由Nicholas C. Zakas在2013年开始开发的,它的初衷就是为了能让开发者能自定义自己的linting rules,而且它提供了一套相当完善的插件机制,可以自由的扩展,动态加载配置规则,同时可以方便的根据报错定位到具体的规则配置。而且我比较喜欢它的一点是文档非常详细,可能这也是灵活所必须的吧。在这里还要提一点,ESLint最初并不是为了造一个重复的轮子,而是作者在实际使用中的需求没有能得到JSHint团队的回应,所以他就结合当时的JSHint和另一个代码风格的检查工具JSCS写出来了现在具备代码风格检查,自定义插件扩展功能的ESLint了。

JSLint,JSHint和ESLint的对比
这三个工具各有特色,我只是做一下对比,选择的话,看个人需求就好了。

JSLint
优点
配置是老道已经定好的,开箱即用。
不足
有限的配置选项,很多规则不能禁用
规范严格,凡是不符合老道所认为的好的风格的,都会有警告(这一项就看你是否完全认同老道了)
扩展性差
无法根据错误定位到对应的规则
JSHint
优点
有了很多参数可以配置
支持配置文件,方便使用
支持了一些常用类库
支持了基本的ES6
不足
不支持自定义规则
无法根据错误定位到对应的规则
ESLint
优点
默认规则里面包含了JSLint和JSHint的规则,易于迁移(这肯定是故意的XD)
可配置为警告和错误两个等级,或者直接禁用掉
支持插件扩展
可以自定义规则
可以根据错误定位到对应的规则
支持ES6
唯一一个支持JSX的工具
不足
需要进行一些自定义配置(因为太灵活了嘛,不过文档是很详细的)
慢 (它比其他两个都要慢)

链接:https://blog.csdn.net/gramdog/article/details/85214008

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant