1. 程式人生 > >使用 Eslint & standard 規範前端程式碼

使用 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 方案,及對實際使用當中可能遇到的問題,進行了記錄。

 

參考連結

1、VSCode環境下配置ESLint 對Vue單檔案的檢測

&n