我目前正在验证我的JavaScript对JSLint和取得进展,它正在帮助我写更好的JavaScript -特别是在与Jquery库工作。

我现在遇到了JSHint, JSLint的一个分支。 所以我想知道,对于JavaScript驱动的web应用程序,哪个是更好或最适用的验证工具:

JSLint还是JSHint?

我现在想要确定一种验证机制,并将其用于客户端验证。

和jshint和jslint的区别?请用javascript实例解释。

链接:

金信- http://www.jshint.com/ JSLINT- http://jslint.com/


当前回答

几个星期前我也有同样的问题,当时我正在评估JSLint和JSHint。

与这个问题的答案相反,我的结论不是:

务必使用JSLint。

Or:

如果您正在为自己或团队寻找一个非常高的标准,JSLint。

因为你可以在JSHint和JSLint中配置几乎相同的规则。所以我认为你所能实现的规则并没有太大的不同。

因此,选择一个而不是另一个的原因更多是政治上的,而不是技术上的。

我们最终决定使用JSHint,原因如下:

似乎比JSLint更可配置。 看起来更像是社区驱动的,而不是一个人的表演(不管这个男人有多酷)。 JSHint比JSLint更符合我们的代码风格OOTB。

其他回答

前言:嗯,事态迅速升级。但我决定挺过去。希望这个答案对你和其他读者有所帮助。

代码提示

虽然JSLint和JSHint是很好的工具,但多年来,我开始欣赏我的朋友@ugly_syntax调用:

较小的设计空间。

这是一个普遍的原则,就像一个“禅僧”,限制一个人必须做出的选择,一个人可以更有成效和创造性。

因此,我目前最喜欢的零配置JS代码风格:

StandardJS。

更新:

流动有了很大的改善。有了它,你 可以添加类型到你的JS与将帮助你防止很多 的病菌。但它也可以不碍事,比如 在接口非类型化JS时。试试吧!

快速入门/ TL

将标准作为依赖项添加到项目中

npm install --save standard

然后是包装。Json,添加以下测试脚本:

"scripts": {
    "test": "node_modules/.bin/standard && echo put further tests here"
},

在开发过程中,如果想要更时髦的输出,请运行npm install——global snzy,而不是运行npm test。

注意:类型检查与启发式

我的朋友在提到设计空间时提到了Elm,我鼓励你尝试一下这种语言。

为什么?JS实际上是受到LISP的启发,LISP是一种特殊的语言,恰好是非类型化的。Elm或Purescript等语言是类型函数式编程语言。

输入限制你的自由,以便编译器能够检查和指导你,当你最终违反语言或你自己的程序的规则;不管程序的大小(LOC)如何。

最近,我们有一位初级同事实现了两次响应式接口:一次在Elm中,一次在React中;来看看我在说什么吧。

主要进行比较。Elm(有型)⇔index.js(无型,无测验)

(注:React代码不是惯用的,可以改进)

最后一点,

事实上JS是无类型的。我凭什么向你推荐类型化编程?

看,有了JS,我们处在一个不同的领域:从类型中解放出来,我们可以轻松地表达那些很难或不可能给出正确类型的东西(这当然是一个优势)。

但是如果没有类型,我们的程序就无法得到控制,所以我们不得不引入测试和(在较小范围内)代码样式。

我建议你从LISP(例如ClojureScript)中寻找灵感,并投资于测试你的代码。阅读子堆栈的方式,以获得一个想法。

和平。

还有另一个正在开发的替代方案- JSCS - JavaScript代码风格:

JSCS是一种代码风格检测器,用于以编程方式强制执行您的风格 指南。您可以使用over为您的项目详细配置JSCS 150条验证规则,包括流行风格指南中的预设 jQuery, Airbnb,谷歌等。

它带有多个预设,您可以通过简单地在.jscsrc配置文件中指定预设并自定义它-覆盖,启用或禁用任何规则来进行选择:

{
    "preset": "jquery",
    "requireCurlyBraces": null
}

还有为流行编辑器构建的插件和扩展。

还看到:

完美的代码,零努力

在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:

咕噜咕噜咕噜 古尔普-埃斯林特

几个星期前我也有同样的问题,当时我正在评估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 */

希望这对你有帮助:)