摘要:工具幫助避免在編寫時(shí)出現(xiàn)愚蠢的錯(cuò)誤。并不檢測(cè)潛在的,比如,未使用的變量或意外的全局變量等。在提到的所有工具中,它具有最廣泛的功能支持。使用工具是捕獲問題的良好步驟,但只能看到規(guī)則允許的錯(cuò)誤。也可用于此目的。
Lint工具幫助避免在編寫JavaScript時(shí)出現(xiàn)愚蠢的錯(cuò)誤。盡管有多年的經(jīng)驗(yàn),我仍然鍵入不正確的變量名稱,出現(xiàn)語法錯(cuò)誤,以及忘記正確地處理error。在浪費(fèi)自己時(shí)間,或更糟糕地浪費(fèi)客戶時(shí)間之前,一個(gè)很好的lint工具,或者一個(gè)linter會(huì)告訴我這個(gè)錯(cuò)誤。一個(gè)很好的lint工具也可以幫助確保一個(gè)項(xiàng)目符合編碼標(biāo)準(zhǔn)。
JavaScript有很多l(xiāng)inter,但是選擇哪一個(gè)呢?我們來看看JSLint,JSHint,JSCS和ESLint這四種流行替代方案的特點(diǎn)和利弊。
概覽這四個(gè)工具基本的工作方式都是一樣的。他們有一套規(guī)則,用于分析和報(bào)告JavaScript文件中的問題。都可以通過npm安裝。它們通過傳遞文件從命令行使用,或者作為插件工具(如Grunt中)使用,也可以集成到編輯器中。他們都支持使用注釋進(jìn)行配置。
以上是它們的相同點(diǎn)。每個(gè)工具都有自己的優(yōu)點(diǎn)和不足,而且只是部分工具比其他的更有優(yōu)勢(shì)。
JSLintJSLint是四個(gè)中最老的。道格拉斯·克羅克福德(Douglas Crockford)在2002年創(chuàng)建,依據(jù)自己的最佳實(shí)踐 - JavaScript的good parts部分。如果你贊成good parts,JSLint可以是一個(gè)很好的工具,即裝即用。
缺點(diǎn)是JSLint不可配置或擴(kuò)展。你根本無法禁用許多功能,其中一些缺少文檔。官方網(wǎng)站不是很有幫助,例如,它沒有任何關(guān)于如何將其與編輯器集成的信息。
優(yōu)點(diǎn)
即裝即用(如果您同意其執(zhí)行規(guī)則的話)
缺點(diǎn)
JSLint沒有配置文件,如果需要更改設(shè)置,可能會(huì)出現(xiàn)問題
配置選項(xiàng)數(shù)量有限,許多規(guī)則無法禁用
不能添加自定義規(guī)則
無文檔
很難知道哪個(gè)規(guī)則導(dǎo)致哪個(gè)錯(cuò)誤
JSHintJSHint被創(chuàng)建為一個(gè)可配置的JSLint版本(它是一個(gè)fork)??梢耘渲妹總€(gè)規(guī)則,并將它們放入一個(gè)配置文件中,這使得JSHint易于在更大的項(xiàng)目中使用。 JSHint還為每個(gè)規(guī)則提供了良好的文檔,因此您可以確切了解它的工作。將其集成到編輯器中也很簡(jiǎn)單。
JSHint的一個(gè)小缺點(diǎn)是它具有寬松的默認(rèn)配置。這意味著您需要做一些設(shè)置才能使其更為有用。當(dāng)與ESLint進(jìn)行比較時(shí),為了啟用或禁用某些錯(cuò)誤消息,還需要知道哪些規(guī)則需要更改。
優(yōu)點(diǎn)
大多數(shù)設(shè)置可以配置
支持配置文件,使其更容易在較大的項(xiàng)目中使用
支持許多開箱即用的庫,如jQuery,QUnit,NodeJS,Mocha等
基本的ES6支持
缺點(diǎn)
很難知道哪個(gè)規(guī)則導(dǎo)致錯(cuò)誤
有兩種類型的選項(xiàng):強(qiáng)制和寬松(可用于使JSHint更嚴(yán)格或抑制其警告)。這可能使配置稍有混亂
沒有自定義規(guī)則支持
JSCSJSCS的不同之處在于它不會(huì)做任何事情,除非你給它一個(gè)配置文件或使用一個(gè)預(yù)設(shè)??梢詮乃木W(wǎng)站下載配置,所以這不是一個(gè)大問題,它有一些預(yù)設(shè),如jQuery編碼風(fēng)格預(yù)設(shè)和Google預(yù)設(shè)。
它有超過90種不同的規(guī)則,您可以使用插件創(chuàng)建自定義的規(guī)則。 JSCS還支持自定義reporter,這使得其更容易與需要以特定格式輸入的工具集成。
JSCS是一個(gè)代碼樣式檢查器。這意味著它只捕獲與代碼格式相關(guān)的問題,而不識(shí)別潛在的bug或錯(cuò)誤。因此,它比其它的工具靈活性更低,但是如果您需要強(qiáng)制執(zhí)行特定的編碼風(fēng)格,那么JSCS就可以做到這一點(diǎn)。
優(yōu)點(diǎn)
支持自定義reporter,可以使其更容易與其他工具集成
如果您遵循一種可用的編碼風(fēng)格,預(yù)設(shè)和現(xiàn)成的配置文件可以讓它更容易設(shè)置
在報(bào)告中有一個(gè)標(biāo)志包含規(guī)則名稱,所以很容易找出哪個(gè)規(guī)則導(dǎo)致了特定的錯(cuò)誤
可以使用定制插件擴(kuò)展
缺點(diǎn)
只檢測(cè)編碼風(fēng)格問題。 JSCS并不檢測(cè)潛在的bug,比如,未使用的變量或意外的全局變量等。
四個(gè)中最慢,但在通常使用中這不是問題
ESLintESLint是四者中最晚出現(xiàn)的。它被設(shè)計(jì)為易于擴(kuò)展,具有大量的自定義規(guī)則,并且可以容易的以插件的形式安裝更多特性。它提供簡(jiǎn)潔的輸出,但默認(rèn)包括規(guī)則名稱,因此你始終知道導(dǎo)致錯(cuò)誤消息的規(guī)則。
ESLint文檔可能會(huì)很少被點(diǎn)擊甚至于錯(cuò)過。規(guī)則列表易于遵循,并且分文別類,但配置說明在某些地方有點(diǎn)混亂。不過,它提供了鏈接,編輯器集成、插件和示例都在一個(gè)單一的位置。
優(yōu)點(diǎn)
靈活:任何規(guī)則都可以切換,許多規(guī)則都有額外的設(shè)置可以調(diào)整
極具擴(kuò)展性,并有許多插件可用
易于理解輸出
包括許多其他linter不可用的規(guī)則,使ESLint對(duì)偵測(cè)問題更加有用
最好的ES6支持,也是唯一支持JSX的工具
支持自定義reporter
缺點(diǎn)
需要一些配置
慢,但不是問題
我的建議這四個(gè)中我選擇ESLint。 JSLint嚴(yán)格且不可配置,而JSHint缺乏擴(kuò)展機(jī)制。如果您只想檢查編碼風(fēng)格,則JSCS是一個(gè)不錯(cuò)的選擇,但是ESLint也能做到,而且它會(huì)檢查代碼中的bug和其他問題。
如果您想使用ES6(或ES2015,貌似現(xiàn)在這樣稱呼),ESLint也是一個(gè)顯而易見的選擇。在提到的所有工具中,它具有最廣泛的ES6功能支持。
如果你想嘗試ESLint,我已經(jīng)創(chuàng)建了一個(gè)5步快速入門指南,讓使用變得非常簡(jiǎn)單。您可以從我的網(wǎng)站下載ESLint 5步快速入門指南。
JSHint是強(qiáng)大的第二選擇。如果您不需要ESLint的高級(jí)功能,JSHint會(huì)在正確配置后捕獲很多問題。如果您不需要除編碼樣式檢查(縮進(jìn)、大括號(hào)等)之外的任何功能,擁有大量可用規(guī)則的JSCS會(huì)是一個(gè)首選。
我一點(diǎn)也不推薦JSLint。其它工具可以做同樣的事情,但不強(qiáng)加任何特定的規(guī)則給用戶。唯一的例外是如果你碰巧同意它執(zhí)行的所有規(guī)則,這種情況下,你可以使用它。
使用lint工具是捕獲問題的良好步驟,但只能看到規(guī)則允許的錯(cuò)誤。如若需要一個(gè)更簡(jiǎn)單的自動(dòng)化bug捕獲器,我建議使用單元測(cè)試。code review也可用于此目的。
你和你的團(tuán)隊(duì)如何確保代碼的質(zhì)量呢?
原文地址:https://www.sitepoint.com/com...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84909.html
摘要:看到很多團(tuán)隊(duì)和開源項(xiàng)目都在用代碼檢查工具,自己一直沒用過,最近加入了新團(tuán)隊(duì)有項(xiàng)目在用,就想著研究一下。代碼校驗(yàn)工具能夠讓你在寫代碼時(shí)避免一些低級(jí)的錯(cuò)誤。同時(shí),也有友好的文檔針對(duì)每一條規(guī)則。在上文提高的所有工具當(dāng)中它對(duì)有著最好的支持。 看到很多團(tuán)隊(duì)和開源項(xiàng)目都在用代碼檢查工具,自己一直沒用過,最近加入了新團(tuán)隊(duì)有項(xiàng)目在用,就想著研究一下。看到sitepoint上的一篇2015年的文章覺得不...
摘要:本文假設(shè)你之前沒有用過任何任務(wù)腳本和命令行工具,一步步教你上手。如果這兩行命令沒有得到返回,可能就沒有安裝正確,嘗試重啟下命令行工具,如果還不行的話,只能回到第一步進(jìn)行重裝。 本文假設(shè)你之前沒有用過任何任務(wù)腳本(task runner)和命令行工具,一步步教你上手Gulp。不要怕,它其實(shí)很簡(jiǎn)單,我會(huì)分為五步向你介紹gulp并幫助你完成一些驚人的事情。那就直接開始吧。 第一步:安裝No...
摘要:在對(duì)比我最近幾個(gè)月所用的開發(fā)工具后,我發(fā)現(xiàn)了一些驚人的東西。永遠(yuǎn)不停止使用。將警告未使用的代碼。預(yù)檢查使用,,和非常有用。不再需要使用開啟服務(wù)器,創(chuàng)建應(yīng)用程序,并打開瀏覽器。嘗試使用別的東西,立即出現(xiàn)錯(cuò)誤。 原文:Supercharging Frontend Development with VS Code 作者:zachcodes 過去幾天,為了在開發(fā) GraphQL / Rea...
摘要:我們已經(jīng)運(yùn)用了的一些閃亮的新特性,那么如何才能轉(zhuǎn)化為的代碼呢首先,我們需要通過來安裝在全局安裝會(huì)提供我們一個(gè)命令行工具。 你是不是也在為可以使用ES6的新特性而興奮,卻不太確定應(yīng)該從哪開始,或者如何開始?不止你一個(gè)人這樣!我已經(jīng)花了一年半的時(shí)間去解決這個(gè)幸福的難題。在這段時(shí)間里 JavaScript 工具鏈中有幾個(gè)令人興奮的突破。 這些突破讓我們可以用ES6書寫完全的JS模塊,而不會(huì)為...
摘要:語法校驗(yàn)會(huì)給出警告當(dāng)你仍在使用或不通過任何關(guān)鍵字聲明變量時(shí)。但是如果腳本中還有其他的普通導(dǎo)出,就會(huì)得到非常奇怪的結(jié)果這個(gè)坑爹的情況目前還沒有任何好的解決方案。 我在多年前愛上了coffeScript。對(duì)于javaScript,我一直保持著深沉的愛,也十分高興得看到node.js的快速發(fā)展,但是作為一個(gè)有python背景的程序員,我更喜歡coffeeScript的簡(jiǎn)練語法。 在任何一個(gè)活...
閱讀 847·2023-04-25 19:49
閱讀 3778·2021-09-30 09:47
閱讀 2770·2021-09-13 10:21
閱讀 2699·2021-08-24 10:04
閱讀 3187·2019-08-30 15:55
閱讀 2341·2019-08-30 15:55
閱讀 2419·2019-08-30 15:54
閱讀 3484·2019-08-30 13:53