本文由garnett在众成翻译平台上翻译。使用Linter和代码美化工具,不仅能让代码更规范,还能尽早把错误扼杀在摇篮里,赶快用起来吧~
当我们在谈论Linter时,有些人只会认为它们是针对代码风格的。没错,即使代码风格校验确实是Linter的主业,但是它能做的事情远不止于此。它能够让你少犯错误少踩坑。
Linter将帮助你在一些场景中捕获错误。比如:
const runnable = {}
if (Math.random() < 0.0001) {
runable.run()
}
上面的代码,如果我们使用基于eslint的规则,将会为我们报出两处错误。第一处报错是runnable声明了但从来没有被使用过,第二处报错是第三行的代码使用了未声明的变量。很明显这两个错误实际上就是一个错误:第3行有一个错字。
在编写代码时而不是在应用程序运行时检测这些错误将节省大量的时间,换句话说在运行时检测这些错误则会花费大量的时间。最糟糕的情况我们可能要花几个小时的时间进行调试,但是有了Linter我们就能够随时得到反馈。
Linter能帮助你快速避免的另一个常见错误是:
const fs = require('fs')
fs.readFile('foo.txt', 'utf8', (err, data) => {
console.log('data', data.toLowerCase())
})
上面的代码,按照eslint的规则,我们会得到一个报错:我们没有处理回调函数中的error。同样的,如果是在生产中遇到错误,我们需要花费大量时间去调试,去重现问题,但是借助Linter可以节省我们大量的时间。
有很多方法可以让你在工作流中集成Linter。
在写代码的时候获取即时反馈的第一步就是在文本编辑器中添加一个Linter的插件。
只需要将Linter作为devdependency添加到package.json中,并创建如下脚本即可:
{
"name": "my-cool-package",
"devDependencies": {
"standard": "*"
},
"scripts": {
"lint": "standard",
"test": "npm run lint && test-runner-name"
}
}
Standard是一套eslint校验规则,同时能够做到即插即用,因为他们的原则是:无需配置。
正如你所看到的,有一个叫做Standard的能够提供可执行文件的NPM包,而这对于你来说已经足够。
您也可以根据你的喜好配置校验的规则,但就我个人而言,官方的配置已经足够了。
你可以通过 husky 或 pre-commit 等工具使用 lint-staged,或者在 git commit 之前触发一个小脚本执行 Linter。
另一个很酷的标准是他们的--fix选项。如果只有编码风格问题,那么Linter会根据这个选项来自动修正这些问题。
类似Standard这样的Linter会让你的代码保持统一的风格。但是最近的另一个新项目Prettier能够让你更进一步。这个格式化工具能够设置单行代码宽度从而避免一行代码过长。举个例子,下面这行代码看起来很好:
foo(arg1, arg2, arg3, arg4);
但是下面这一行就有点太长了
foo(reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne());
所以Prettier会把上面这行代码整形成下面这个样子
foo(
reallyLongArg(),
omgSoManyParameters(),
IShouldRefactorThis(),
isThereSeriouslyAnotherOne()
);
Prettier有许多关于标识符、分号使用等等的配置选项,同时它也支持其他语言,如:TypeScript,CSS,LESS和SCSS。
Prettier并不是用于报错,因为它只是一个美化工具,但这并不影响你使用一个Linter和一个类似Prettier的格式化工具来规范你的代码。而实际上,采用Standard + Prettier这样的组合,会让你现有的工具如虎添翼,展现出两者的结果。
当然,不仅限于上文介绍的,还有许多其他JavaScript代码风格规范。就比如Airbnb 以及Google 的规范建议。
说实话,这么多工具当中我最喜欢的还是Standard,而且如果你喜欢在代码中写分号的话,你可以使用 semistandard。
说到底,究竟用哪一个校验工具还是由你自己说了算。但只要选择了一个,那么就坚持地使用下去,正确地使用。
原文来自:齐舞周刊
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
支持全球约2.4万个城市地区天气查询,如:天气实况、逐日天气预报、24小时历史天气等
支持识别各类商场、超市及药店的购物小票,包括店名、单号、总金额、消费时间、明细商品名称、单价、数量、金额等信息,可用于商品售卖信息统计、购物中心用户积分兑换及企业内部报销等场景
涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。
根据给定的手机号、姓名、身份证、人像图片核验是否一致
通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。