摘要:從來沒有見過這么強(qiáng)大的代碼格式化和風(fēng)格統(tǒng)一工具。你可以預(yù)設(shè)像等公司的代碼風(fēng)格。所有工具的安裝辦法自動生成你的代碼風(fēng)格的配置文件。學(xué)會的代碼規(guī)范,意味著你的代碼風(fēng)格已經(jīng)走在了世界第一行列。
無論人數(shù)多少,代碼都應(yīng)該同出一門。
JavaScript 或者 Node 的語法本身很弱,在teamwork 和大型項(xiàng)目開發(fā)的時候,技術(shù)選型時往往選擇了 typescript 或者加入 Facebook 的 flow 工具。但是對于代碼風(fēng)格,確實(shí)難以統(tǒng)一江山。
每個開發(fā)者會有自己的開發(fā)習(xí)慣,自己喜歡的編輯器,代碼風(fēng)格更加是千差萬別。進(jìn)入 Team work 之后,團(tuán)隊(duì)管理的第一件事情就是定義規(guī)范,文件命名,目錄結(jié)構(gòu),代碼風(fēng)格。就像這樣
然后會組織多次會議,一起學(xué)習(xí)研究規(guī)范, 一次又一次。然后在 code review 的時候指出,這里不符合規(guī)范,那邊命名有問題。時間久了,大家對于規(guī)范的印象和要求就弱了。如果有新員工入職,那他又得重新學(xué)一遍代碼風(fēng)格規(guī)范,誰知道,新員工對團(tuán)隊(duì)代碼風(fēng)格接受和學(xué)習(xí)得怎么樣呢?代碼風(fēng)格的問題一直困擾了很久。
當(dāng)然我們也做了很多嘗試,比較加入 jshint、grunt 編譯的時候,執(zhí)行 css、js 檢查。更加喪心變狂的是,加入了 .git/pre-commit ,在 git 提交的時候,必須通過預(yù)檢查,才能提交。這種方式過于粗暴,可配置的內(nèi)容也不夠靈活。只能惡心一下自己,并沒有在開發(fā)團(tuán)隊(duì)推廣起來。
來的不早也不晚,JSCS 恰巧就這樣出現(xiàn)了。從來沒有見過這么強(qiáng)大的代碼格式化和風(fēng)格統(tǒng)一工具。
正如官方介紹:
優(yōu)點(diǎn)JSCS is a code style linter/formatter for programmatically enforcing your style guide. You can configure JSCS for your project/company using over 150 validation rules, including presets from popular style guides like jQuery, Airbnb, Google, and more.
JSCS 有超過150種代碼驗(yàn)證規(guī)則。
你可以預(yù)設(shè)像 Google、Airbnb 等公司的代碼風(fēng)格。
JSCS 可以幫你檢查,甚至按照你的預(yù)設(shè)風(fēng)格格式化代碼。當(dāng)執(zhí)行 jscs app/ --fix 的時候,項(xiàng)目的代碼風(fēng)格立馬和 Airbnb 保持一致了,我還像個沒見過世面的人一樣驚嘆了一番。
支持 ES2015, JSX, Flow 等。它可以驗(yàn)證任何有效的 babel 代碼
支持絕大多數(shù)開發(fā)工具和環(huán)境。Grunt Task、Atom、Sublime Text、Intellij IDEA、WebStrom、RubyMine 等等。所有工具的安裝辦法
自動生成你的代碼風(fēng)格的配置文件。jscs --auto-configure src 。比如:我的團(tuán)隊(duì)代碼風(fēng)格很牛掰,不需要引入其他的代碼風(fēng)格,那這一行命令,就可以讓所有風(fēng)格統(tǒng)一起來。
你要知道,Airbnb 的 javascript 代碼風(fēng)格在 github 里有3.4W+ star。 https://github.com/airbnb/javascript
學(xué)會 Airbnb 的代碼規(guī)范,意味著你的代碼風(fēng)格已經(jīng)走在了世界第一行列。代碼功底沒到第一線,至少代碼風(fēng)格提上來了,值得你裝逼了。少年,激動吧。
這份文檔涵蓋了 js 的所有方法面面,對于 web 開發(fā)再合適不過了。
上手 安裝npm install jscs -g
運(yùn)行
jscs path[ path[...]]
你也可以注入到 JSCS
cat myfile.js | jscs進(jìn)階
開發(fā)工具可以自動讀取項(xiàng)目中的 .jscsrc 文件,來進(jìn)行 JSCS 檢查,并且 格式化好你的代碼 。配置文件舉例:
{ // 使用 jquery 編碼風(fēng)格規(guī)范 "preset": "airbnb", "fix": true, "maxErrors": 50, "fileExtensions": [".js", ".jsx"], "excludeFiles": [] // 改變 requireCurlyBraces 規(guī)則 //"requireCurlyBraces": null // or false }常用配置
preset (用預(yù)置規(guī)則進(jìn)行規(guī)則預(yù)設(shè))
fix (true|false) 是否自動修復(fù)風(fēng)格
additionalRules (附加規(guī)則)
excludeFiles (對指定文件或目錄禁用風(fēng)格檢查,默認(rèn)排除 node_modules 文件夾)"excludeFiles": ["folder_to_exclude/**", "src/!(bar|foo)"]
fileExtensions (驗(yàn)證文件后綴名) "fileExtensions": [".js", ".jsx"]
maxErrors (設(shè)置錯誤要報告的最大數(shù)目,默認(rèn)50)
esnext 默認(rèn)的。對于es2015的支持
es3 過時了,不要管了
verbose (true|false)(為有錯誤的信息添加規(guī)則名稱)
errorFilter (默認(rèn) false, 否則配置路徑) (確定是否報告錯誤的篩選器函數(shù))
錯入容忍你可以書寫默寫規(guī)則,讓 JSCS 容忍某些錯誤。所有的規(guī)則都可以在這里查到:http://jscs.info/rules
可以直接設(shè)置規(guī)則為 null ,
{ "preset": "jquery", "requireCurlyBraces": null }
禁用所有規(guī)則
var a = b; // jscs:disable var c = d; // 在這行及之后的所有錯誤都將被忽略 // jscs:enable var e = f; // 在這行及之后的所有錯誤都將被報告
禁用特定的規(guī)則
// jscs:disable requireCurlyBraces if (x) y(); // 在這行及之后的所有 requireCurlyBraces 錯誤都將被忽略 // jscs:enable requireCurlyBraces if (z) a(); // 在這行及之后的所有錯誤包括requireCurlyBraces 錯誤都將被報告
對單行進(jìn)行特定規(guī)則忽略
if (x) y(); // jscs:ignore requireCurlyBraces if (z) a();
禁用一個特定規(guī)則后,你可以啟用所有規(guī)則,該規(guī)則將重新啟用。
// jscs:disable requireCurlyBraces if (x) y(); // 在這行及之后的所有 requireCurlyBraces 錯誤都將被忽略 // jscs:enable if (z) a(); // 在這行及之后的所有錯誤包括 requireCurlyBraces 錯誤都將被報告
你可以同時禁用多個規(guī)則,并逐步重新啟用它們:
// jscs:disable requireCurlyBraces, requireDotNotation if (x["a"]) y(); // 在這行及之后的所有 requireCurlyBraces 或 requireDotNotation 錯誤都將被忽略 // jscs:enable requireCurlyBraces if (z["a"]) a(); // 在這行及之后的所有錯誤包括 requireDotNotation 錯誤都將被報告,但 requireCurlyBraces 錯誤將被忽略 // jscs:enable requireDotNotation if (z["a"]) a(); // 在這行及之后的所有錯誤都將被報告
為某個文件禁用所有規(guī)則
在文件第一行寫上:
// jscs:disable
如果 JSCS 還不能滿足你和你團(tuán)隊(duì)對代碼風(fēng)格的要求,麻煩告知一個更好的辦法給我!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79331.html
摘要:目前來說基本上有四種工具可以完成,。發(fā)展歷程關(guān)于保持代碼一致性風(fēng)格,我們可以追溯到。是啥是針對語言源碼的檢測工具,它的功能就是看看源碼有沒有編寫錯誤,有沒有風(fēng)格問題。 1. 理解問題 首先這個問題展開來講就是如何在Node.js模塊編寫中保持代碼一致性風(fēng)格。 目前來說基本上有四種工具可以完成JSLint,JSHint,JSCS,ESLint。 下面將從歷史的角度來看看他們四個有什么關(guān)系...
摘要:看到很多團(tuán)隊(duì)和開源項(xiàng)目都在用代碼檢查工具,自己一直沒用過,最近加入了新團(tuán)隊(duì)有項(xiàng)目在用,就想著研究一下。代碼校驗(yàn)工具能夠讓你在寫代碼時避免一些低級的錯誤。同時,也有友好的文檔針對每一條規(guī)則。在上文提高的所有工具當(dāng)中它對有著最好的支持。 看到很多團(tuán)隊(duì)和開源項(xiàng)目都在用代碼檢查工具,自己一直沒用過,最近加入了新團(tuán)隊(duì)有項(xiàng)目在用,就想著研究一下??吹絪itepoint上的一篇2015年的文章覺得不...
摘要:工具幫助避免在編寫時出現(xiàn)愚蠢的錯誤。并不檢測潛在的,比如,未使用的變量或意外的全局變量等。在提到的所有工具中,它具有最廣泛的功能支持。使用工具是捕獲問題的良好步驟,但只能看到規(guī)則允許的錯誤。也可用于此目的。 Lint工具幫助避免在編寫JavaScript時出現(xiàn)愚蠢的錯誤。盡管有多年的經(jīng)驗(yàn),我仍然鍵入不正確的變量名稱,出現(xiàn)語法錯誤,以及忘記正確地處理error。在浪費(fèi)自己時間,或更糟糕地...
摘要:一個靠譜的應(yīng)該包含以下幾部分言簡意賅的項(xiàng)目介紹你的項(xiàng)目解決了什么核心問題,有哪些令人心動的特性。除了在中提到遵循的開源協(xié)議外,一個靠譜的開源項(xiàng)目還會將該開源協(xié)議的內(nèi)容文檔放在自己的項(xiàng)目下方。 0. 前言 寫前端代碼一段時間之后,你可能會萌生做一個開源項(xiàng)目的想法,一方面將自己的好點(diǎn)子分享出去讓更多的人受益,另一方面也可以在社區(qū)貢獻(xiàn)的環(huán)境下學(xué)到更多的東西從而快速成長。但是開源項(xiàng)目也有開源項(xiàng)...
摘要:一個靠譜的應(yīng)該包含以下幾部分言簡意賅的項(xiàng)目介紹你的項(xiàng)目解決了什么核心問題,有哪些令人心動的特性。除了在中提到遵循的開源協(xié)議外,一個靠譜的開源項(xiàng)目還會將該開源協(xié)議的內(nèi)容文檔放在自己的項(xiàng)目下方。 0. 前言 寫前端代碼一段時間之后,你可能會萌生做一個開源項(xiàng)目的想法,一方面將自己的好點(diǎn)子分享出去讓更多的人受益,另一方面也可以在社區(qū)貢獻(xiàn)的環(huán)境下學(xué)到更多的東西從而快速成長。但是開源項(xiàng)目也有開源項(xiàng)...
閱讀 2795·2021-11-22 14:45
閱讀 2940·2021-09-10 11:26
閱讀 3264·2021-09-07 10:18
閱讀 2231·2019-08-30 14:08
閱讀 633·2019-08-29 12:22
閱讀 1399·2019-08-26 13:48
閱讀 2545·2019-08-26 10:24
閱讀 1162·2019-08-23 18:35