JSLint,JSHint,ESLint的区别

2019-09-12 16:32:19

参考地址  JSLint,JSHint,ESLint的区别

主流的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的工具

不足

需要进行一些自定义配置(因为太灵活了嘛,不过文档是很详细的)

慢 (它比其他两个都要慢)



  • 2020-02-22 17:45:43

    tweenjs简单快速学习

    tweenjs 是使用 JavaScript 中的一个简单的补间动画库,支持数字、对象的属性和 CSS 样式属性的赋值。 tweenjs 以平滑的方式修改元素的属性值,需要传递给 tween 要修改的值、动画结束时的最终值和动画花费时间(duration),之后 tween 引擎就可以计算从开始动画点到结束动画点之间值,从而产生平滑的动画效果。

  • 2020-02-22 17:47:12

    easeJs入门学习教程

    createjs中包含以下四个部分: EaselJS:用于 Sprites、动画、向量和位图的绘制,创建 HTML5 Canvas 上的交互体验(包含多点触控) TweenJS:用于做动画效果 SoundJS:音频播放引擎 PreloadJS:网站资源预加载

  • 2020-02-22 17:54:59

    最新FullCalendar中文文档

    Fullcalendar是一款用来管理日程安排、工作计划的日历工具,它功能非常强大而且非常实用。而目前网络上没有很好的中文文档,为了更好的和大家分享Fullcalendar的相关使用,即日起计划将Fullcalendar的英文文档翻译成中文版。

  • 2020-02-22 17:57:05

    nuxtjs支持api接口,serverMiddleware

    Who can’t relate to this: You’ve built a small portfolio page for someone, maybe a company, a friend or yourself. And the only API endpoint you’d need is one for a form. What now? Scaffolding a new service just for this one endpoint?

  • 2020-02-22 17:59:34

    FullCalendar插件的基本使用带详细配置翻译

    前段时间,一直在开发考勤系统,当时为满足设计的需求,选了好几个插件,最后决定采用Fullcanlendar的插件。感觉这个插件可以满足现阶段的功能开发需求

  • 2020-02-22 18:03:10

    Vue组件中使用Sass或者Less全局变量

    本文以Sass做案例,Less的参考,基本配置大同小异。 假如我们有一个Sass的全局变量common.scss文件,路径 ../style/common.scss 代码如下:

  • 2020-02-23 23:27:26

    Nuxt.js 基础入门教程

    Nuxt.js 就是一个极简的 vue 版的 ssr 框架。基于它,我们可以快速开发一个基于 vue 的 ssr 单页面应用。