使用 Eslint & standard 規范前端代碼


前言

JavaScript的動態語言類型,給它帶來了獨特的魅力,產生了風格多樣的開發范式,同時也帶來了一些問題,從運行時常見的 undefined 、null 報錯,到代碼隨意的加減分號、換行、空格,引起的視覺混亂,如果是團隊開發,則這種情況會更加的嚴重,必須加以約束,下文介紹基於 vue 的代碼嚴格模式及編程規范。
 
核心插件:  Eslint standard

Eslint 是什么?

ESLint最初是由Nicholas C. Zakas 於2013年6月創建的開源項目。它的目標是提供一個插件化的javascript代碼檢測工具。與它類似的項目有 JSLint、JSHint。
 
使用 ESLint 可以保證代碼的一致性和避免錯誤,接下來介紹 ESLint 的使用。

ESLint 的安裝與配置

一、vue-cli3 初始化引入ESLint
如果是用 vue-cli3 初始化搭建項目,可以在命令行中執行 vue ui 打開vue-cli3 新增的圖形化界面,以創建和管理項目;默認是配置了 babel + eslint ,也可以手動執行項目配置以引入更多特性,如router、vuex 、scss、typescript、unit測試、e2e測試;
 
如果是后期引入 ESLint,則需要手動安裝下圖所示的幾個與 ESLint 相關的插件,安裝指令為
vue add @vue/eslint
提示: vue add 的設計意圖是為了安裝和調用 Vue CLI 插件。對於普通的 npm 包而言,這不意味有一個替代(命令)。對於這些普通的 npm 包,你仍然需要(根據所選的 npm 包)使用包管理器。
 
vue add @eslint 會依次執行安裝和調用兩條命令,並智能生成需要的配置文件,可能會修改項目當前文件內容,所以在運行 vue add 前,需要先保存提交下項目當前狀態;vue add 的好處在於,可以調用 vue cli 插件,比如我只是執行了 vue add @vue/eslint 一條指令,安裝后根據命令行的提示,會幫助你匹配安裝剩下的所有 eslint 配置,而不需要自己再一條條安裝了。
 
安裝完成后,可以在根目錄發現多了一個 .eslintrc.js 文件,這是 eslint 的配置文件,可以配置自定義規則(rules)等。
 
二、通用項目引入 ESLint
如果項目不是基於vue-cli3 或者 vue,則需要以 npm 包管理器安裝 eslint,安裝完成后在 ./node_modules/.bin/ 目錄下執行 eslint --init 命令,根據指引生成所需的 eslint 配置方案;這里可以選擇應用於 vue 或者其它例如 react 項目。
 
npm install eslint --save-dev   // 安裝並保存到項目開發依賴
./node_modules/.bin/eslint -- --init // 初始化命令
 
 
安裝完成后,可以在 package.json 的 script 中配置 lint 命令,以執行eslint 校驗。
 
"lint": "vue-cli-service lint" //基於vue-cli3
"lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs" // 非vue-cli3 

編碼規范 Standard 的安裝與使用

應用了 ESLint 后,通常是需要自己來配置繁雜的 rules 規則,這也是一個喜好類的東西,多數人是不願意在這上面耗費太多精力的(比如手動配置數百個ESLint 規則),於是github 上出現了一些開源的代碼規范庫,比較流行的有 airbnb、standard、prettier等,下面介紹下 standard
 

在 vue 中的使用方式:

在 vue 中通常需要和 ESLint 一起使用,上面講到 ESLint 時候有注意到么,ESLint 初始化指令中有一個選擇開源編碼規范的指令,系統默認是有 standard 的選項的,直接選擇就可以了。

 

常見問題

1、配置了 ESLint + standard 但是不生效?
在項目根目錄里找到 .eslintrc.js 文件,注意 extends 和 plugins 屬性是否配置,下圖的extends 代表 ESLint 繼承了standard 的編碼規范。
 
2、只是 .js 文件生效了, .vue 文件沒有效果 ?
.vue 文件的校驗,需要注意你的 package.json 是否安裝了 eslint-plugin-html 插件,並且在 .eslintrc.js 中配置了 plugins;
 
如果是用 vscode 編輯器開發,需安裝 ESLint、Vetur 這兩個 vscode 插件,並在 設置 =》 settings.json 文件中添加以下配置,然后重啟下 vscode,即可生效。
 
"files.associations": {
    "*.vue": "vue"
},
"eslint.autoFixOnSave": true,
"eslint.validate": [
    "javascript",
    "javascriptreact",
    {
        "language": "vue",
        "autoFix": true
    },"html","vue"
]

  

3、配置了 standard 后,還能自定義 rules 嗎?
standard 本身是不贊成這樣做的,如果你一定要使用 standard 並需要對其中某些規則進行自定義的話,你需要使用 eslint-config-standard,當然, 在上面我們執行的 ESLint init 指令安裝的配置中,就是以這種形式使用standard 的。
 

總結

本文介紹了用於前端編碼規范、代碼質量管理的幾個開源方案,搭建了基於 vue 的 ESLint + standard 方案,及對實際使用當中可能遇到的問題,進行了記錄。

 

參考鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM