1. 程式人生 > >淺談WEB前端規範化標準之ESlint

淺談WEB前端規範化標準之ESlint

規範化標準

軟體開發需要多人開發,不同的開發者具有不同的編碼習慣和喜好,不同的喜好增加專案的維護成本,所以需要明確統一的標準,決定

了專案的可維護性,人為的約定不可靠,所以需要專門的工具進行約束,並且可以配合自動化工具進行檢查,這種專門的工具稱為lint,

前端接觸最多的是ESLint,下面我們看下如何使用這些工具落實前端規範化操作。

ESLint介紹

目前最主流的JavaScript Lint工具 監測JS程式碼質量 ,統一開發者的編碼風格,同時ESLint可以幫助開發者提升編碼能力作用的一款工

具,是npm的一個模組。

ESLint安裝

yarn init --y

yarn add eslint --save-dev

yarn eslint --init (各種提示問題,我選擇的檢查語法,程式碼不合理,風格不統一等所有的規範,根據自己情況填寫完成後生成.eslintrc.js

配置檔案)//專案初始化

如下圖所示可以寫一些問題程式碼

執行yarn eslint xxx(上文定義的js檔案),會有很多錯誤提示,執行--fix可以自動幫我們解決大部分問題(樣式問題)

yarn  eslint xx --fix

執行之後的結果提示有一個未使用的變數,還有一個未使用的方法,手動去掉之後,再次執行eslint --fix 結果無異常

ESlint 配置檔案.eslintrc.js解析

正常情況下,我們不需要手動配置,但是如果我們開啟或者關閉某些校驗規則的時候,就需要用到這個配置檔案一般情況下,JavaScri-

pt在不同的執行環境中是有不同的api可以被呼叫,很多都是以全域性成員的形式提供出來,一旦開啟代表所有的定義的成員都會被全域性使

用。例如window和document物件是執行在瀏覽器環境中,而在node.js環境中不存在這些物件,如下圖所示env的作用就是標記不同的運

行環境,ESlint會根據成員資訊判斷環境是否是可用的。

如上圖所示的env中如果把Browser設定為false,發現還是可以使用window和document還是可以使用這是因為在node_modules資料夾 

下資料夾下的eslint-config-standard(yarn eslint --init初始化中選擇使用standard規範)中的eslintrc.json中globals中設定了document

等為全域性只讀成員,所以.eslintrc.js中無論設定true和false都會導致失效。

extends:繼承共享配置

parserOptions:設定js的版本,程式碼低於該版本會無法執行

rules:[]//配置ESLint中每個規則的開啟或者關閉,屬性為內建屬性,屬性value值為off warn error

globals:定義另外的全域性變數,比如jquery,這樣就可以使用jquery,也不會報錯

ESlint配置註釋

Eslint只是一個規則,總有一兩個地方不適用的時候,這時候就可以通過註釋的方式,讓eslint跳過這行程式碼不解析,下面舉一個小小的例子

具體可以去看eslint文件看更多的註釋方法。

ESlint 結合webpack

Webpack打包之前是把遇到的模組交給對應的loader進行處理,eslint會通過loader的形式去整合到webpack中,這樣通過打包之前校驗代

碼,具體配置如下:

對於react解析jsx語法則需要一些額外的配置

yarn add eslint-plugin-react

ESlint檢查TypeScript

.eslintrc中需要配置針對ts的語法解析器,原因ts的很多語法是不同於js的

stylelint的使用

eslint是監測JS程式碼質量的工具,stylelint是檢測css及less,sass程式碼質量的工具。

yarn add stylelint --dev

yarn add stylelint-config-standard //安裝共享配置模組

yarn add stylelint-config-sass-guidelines --dev 針對sass模組的檢測

與eslint不同的是.stylelintrc.js 不是通過初始化建立的 而是需要手動建立,stylelint配置如下:

prettier簡介

prettier是目前最流行的一款修改程式碼樣式格式統一的工具,針對多種css,js,vue等檔案的格式

yarn add prettier --dev

yarn prettier . --write 即可覆蓋原始碼

Git hooks工作機制(簡單介紹)

很多時候多人合作開發的專案中,或許有人忘記使用lint工具檢測程式碼,就提交到git倉庫,可能會引發後續問題,有一種結合git倉庫的lint工

具,在提交程式碼前進行程式碼檢測。

首先新建個資料夾,git init後點擊.git資料夾裡面的hooks資料夾,複製pre-commit.sample檔案,改名為pre-commit,可以在裡面測試下寫下

shell指令碼語句輸出內容

 

touch demo.txt //新建測試檔案

vim demo.txt //填充demo檔案

git add .

git commit -m "xxxxx"

執行完上步操作之後,我們可以看到before code列印到控制檯當中,說明已經工作了,我們就可以想辦法在提交程式碼之前做lint操作。

ESLint 結合Git Hooks的使用

很多情況下,很多前端開發者不太擅長shell指令碼開發一些功能,而有些功能必須要使用的,所以有人開發了一個npm的工作模組Husky

可以實現Git Hooks的使用需求,下面來測試下Husky與一些相關配置的組合使用(需要把上文中測試建立的pre-commit檔案刪除掉)

yarn add husky --dev 首先安裝husky模組

package.json中定義不同的任務

配置好後,再次執行commit操作,會先進行檢查,如果 有問題會阻止提交程式碼操作,如果想檢查出問題之後新增格式化的功能,需要新增l

int-staged模組配合husky使用。

yarn add lint-staged --dev

package.json配置完成後再次執行commit操作,不但會對程式碼進行檢查,還會執行程式碼初始化的操作

/**************************************************************************************************************************************************/

2021,砥礪前行,加油!