我目前正在验证我的JavaScript对JSLint和取得进展,它正在帮助我写更好的JavaScript -特别是在与Jquery库工作。
我现在遇到了JSHint, JSLint的一个分支。
所以我想知道,对于JavaScript驱动的web应用程序,哪个是更好或最适用的验证工具:
JSLint还是JSHint?
我现在想要确定一种验证机制,并将其用于客户端验证。
和jshint和jslint的区别?请用javascript实例解释。
链接:
金信- http://www.jshint.com/
JSLINT- http://jslint.com/
在javascript检测方面,还有另一个成熟且积极开发的“播放器”——ESLint:
ESLint是一个用于识别和报告中发现的模式的工具
ECMAScript / JavaScript代码。在许多方面,它类似于JSLint和
JSHint有几个例外:
ESLint使用Esprima进行JavaScript解析。
ESLint使用AST来计算代码中的模式。
ESLint是完全可插入的
单个规则是一个插件,你可以在运行时添加更多的规则。
这里真正重要的是它可以通过自定义插件/规则进行扩展。已经为不同的目的编写了多个插件。其中包括:
eslint-plugin-angular(强制执行John Papa的Angular风格指南中的一些指导方针)
eslint-plugin-jasmine
eslint-plugin-backbone
当然,你也可以使用你选择的构建工具来运行ESLint:
咕噜咕噜咕噜
古尔普-埃斯林特
在javascript检测方面,还有另一个成熟且积极开发的“播放器”——ESLint:
ESLint是一个用于识别和报告中发现的模式的工具
ECMAScript / JavaScript代码。在许多方面,它类似于JSLint和
JSHint有几个例外:
ESLint使用Esprima进行JavaScript解析。
ESLint使用AST来计算代码中的模式。
ESLint是完全可插入的
单个规则是一个插件,你可以在运行时添加更多的规则。
这里真正重要的是它可以通过自定义插件/规则进行扩展。已经为不同的目的编写了多个插件。其中包括:
eslint-plugin-angular(强制执行John Papa的Angular风格指南中的一些指导方针)
eslint-plugin-jasmine
eslint-plugin-backbone
当然,你也可以使用你选择的构建工具来运行ESLint:
咕噜咕噜咕噜
古尔普-埃斯林特
还有另一个正在开发的替代方案- JSCS - JavaScript代码风格:
JSCS是一种代码风格检测器,用于以编程方式强制执行您的风格
指南。您可以使用over为您的项目详细配置JSCS
150条验证规则,包括流行风格指南中的预设
jQuery, Airbnb,谷歌等。
它带有多个预设,您可以通过简单地在.jscsrc配置文件中指定预设并自定义它-覆盖,启用或禁用任何规则来进行选择:
{
"preset": "jquery",
"requireCurlyBraces": null
}
还有为流行编辑器构建的插件和扩展。
还看到:
完美的代码,零努力
几个星期前我也有同样的问题,当时我正在评估JSLint和JSHint。
与这个问题的答案相反,我的结论不是:
务必使用JSLint。
Or:
如果您正在为自己或团队寻找一个非常高的标准,JSLint。
因为你可以在JSHint和JSLint中配置几乎相同的规则。所以我认为你所能实现的规则并没有太大的不同。
因此,选择一个而不是另一个的原因更多是政治上的,而不是技术上的。
我们最终决定使用JSHint,原因如下:
似乎比JSLint更可配置。
看起来更像是社区驱动的,而不是一个人的表演(不管这个男人有多酷)。
JSHint比JSLint更符合我们的代码风格OOTB。
好吧,而不是做手动lint设置,我们可以包括所有的lint设置在我们的JS文件本身的顶部。
在该文件中声明所有的全局变量,如下所示:
/*global require,dojo,dojoConfig,alert */
像这样声明所有的lint设置:
/*jslint browser:true,sloppy:true,nomen:true,unparam:true,plusplus:true,indent:4 */
希望这对你有帮助:)
(编辑)
以下答案经过编辑。我把下面的原始答案留给上下文(否则这些评论就没有意义了)。
当这个问题最初被问到时,JSLint是JavaScript的主要检测工具。JSHint是JSLint的一个新分支,但还没有从原来的分叉。
从那以后,JSLint基本上保持了静态,而JSHint已经发生了很大的变化——它抛弃了许多JSLint中比较对立的规则,增加了大量的新规则,并且总体上变得更加灵活。另外,另一个工具ESLint现在也可用了,它更灵活,有更多的规则选项。
在我最初的回答中,我说过你不应该强迫自己坚持JSLint的规则;只要您了解它为什么抛出警告,您就可以自己判断是否要更改代码来解决警告。
从2011年开始,JSLint的规则集非常严格,这是一个合理的建议——我看到很少有JavaScript代码集可以通过JSLint测试。然而,随着JSHint和ESLint工具中更实用的规则可用,尝试让您的代码零警告地通过它们是一个更现实的命题。
可能偶尔还会有linter抱怨您故意做的事情的情况——例如,您知道应该总是使用===,但只有这一次,您有一个很好的理由使用==。但即使这样,使用ESLint,你也可以选择在有问题的行周围指定ESLint -disable,这样你仍然可以通过零警告的lint测试,其余的代码都遵守规则。(只是不要经常做这样的事情!)
[原答案如下]
务必使用JSLint。但不要对结果和修复它所警告的一切耿耿于心。它将帮助您改进代码,并帮助您发现潜在的错误,但并不是JSLint抱怨的所有问题都变成了真正的问题,所以不要觉得您必须在没有任何警告的情况下完成这个过程。
几乎任何长度或复杂的Javascript代码都会在JSLint中产生警告,无论它写得有多好。如果你不相信我,试着通过它运行一些流行的库,比如JQuery。
一些JSLint警告比其他警告更有价值:了解哪些警告需要注意,哪些警告不那么重要。每个警告都应该考虑,但不要觉得必须修改代码来清除任何给定的警告;你完全可以看一看代码,然后觉得自己满意;有时候,JSlint不喜欢的事情实际上是正确的事情。