国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

eslint的基礎使用

Brenner / 498人閱讀

摘要:我們通過配置一些風格,讓來強制提醒我們代碼的風格是否符合規范,所以就是很好的選擇,但是還需要和的結合來使用。非派生類的構造函數不能調用。

JavaScript的編程風格

在前端工程愈演愈大的情況下,JavaScript占的比例也很足,需要良好的書寫風格,才能在多人協作code時提高效率,何況代碼還是需要人來讀的,所以可讀性、可維護性高的代碼很多時候有重要意義。

這里推薦下Airbnb的掛在github上的JavaScript編寫風格:https://github.com/libertyAlo... 有時間的話,還是希望可以多看看。

eslint

即使我們看了無數遍上面說到的Airbnb的JavaScript的編程風格,但是,不少情況下還是會寫出不符合要求的代碼,那么就需要工具來約束我們。我們通過配置一些風格,讓IDE來強制提醒我們代碼的風格是否符合規范,所以eslint就是很好的選擇,但是eslint還需要和IDE的結合來使用。

eslint的使用

eslint是一個node的包,需要類似npm、yarm來安裝,也和其他的第三方包一樣,可以全局安裝,也可以本地安裝,建議這個全局安裝,因為這個包很多時候并不是供編程人員直接使用,而是配合ide或者編輯器來進行使用的,所以全局安裝后,可以本地生成配置文件,通過和IDE的配合來起到檢測書寫風格的效果。

npm install -g eslint

可以安裝最新版本,安裝好了,考慮哪些工程需要使用eslint來檢測,哪些不需要,還有哪些文件需要,哪些文件不需要,甚至文件夾是否需要,在需要的工程根目錄下執行

eslint --init

需要配置,可以選擇一個流行的風格,Airbnb或者標準,生成JSON文件,.eslintrc.json這個配置文件,
需要注意,win10在git ui的命令窗口執行的話無法使用箭頭按鍵來選擇,所以最好還是使用win自帶的cmd窗口
這里就可以修改這個json文件,來配置你熟悉的,覺得合理的規則,以及排除的文件,

{
    "rules": {
"no-console": 2, // 禁用 console
"no-alert": 2, // 禁用 alert
"no-irregular-whitespace": 2, //禁止tab、空格之外的非法空白
"no-unexpected-multiline": 2, //禁止使用令人困惑的多行表達式,一行結束最后使用;或者是- +之類的連接符
"guard-for-in": 2, // for in 循環必須限制 Object.prototype.hasOwnProperty
"no-caller": 2, //禁用 arguments.caller 或 arguments.callee
"no-extend-native": 2, //禁止擴展原生對象
"no-extra-bind": 2, //禁止不必要的函數綁定 函數中沒有使用this時,不需要綁定this
"no-invalid-this": 1, // 控制this的使用,只能在構造函數【首字母大寫】、對象、類中使用
"no-multi-spaces": [2, {"ignoreEOLComments": true}], //禁止非縮進處出現多個空格 ,但忽略行尾注釋前的多個空格 let a =   b; b前空格多了
"no-multi-str": 2, //禁止多行字符串  可以連接多行字符實現換行,建議使用 "
" +的組合
"no-new-wrappers": 2, //禁止原始包裝實例 new String new Number的操作不合理,會變成初始化一個對象,而不是對應的初始類型
"no-throw-literal": 2, //限制可以被拋出的異常 僅僅 拋出(throw) Error 對象本身或者用戶自定義的以 Error 對象為基礎的異常
"no-with": 2, //不使用with
"no-unused-vars": [2, {"args": "none"}], // 未使用的變量定義,參數不校驗,參數有可能是可選參數
"array-bracket-spacing": [2, "never"], //禁止或強制在括號內使用空格, 禁止使用不一致的空格,應該遵守格式 [1, 2, 3],也就是,逗號后面一個空格
"brace-style": 2, //大括號風格要求 one true brace style 風格如下:
/*
if (foo) {
  bar();
} else {
  baz();
}
*/
"camelcase": [1, {"properties": "never"}], // 駝峰變量命名,警告,而且屬性名不會要求是駝峰,變量名要求是
"comma-dangle": [2], //禁止在數組、對象、函數參數最后面添加拖尾逗號
"comma-spacing": 2, // 逗號后非行尾需要加空格
"comma-style": 2, //要求逗號放在數組元素、對象屬性或變量聲明之后,且在同一行 
"computed-property-spacing": 2, //禁止在計算屬性中使用空格 obj[key] ok
"eol-last": 2, //要求在非空文件末尾至少存在一行空行
"func-call-spacing": 2, // 函數執行需要緊挨著(括號,alert(1) ok 不要alert  (2)
"jsx-quotes": 2, //強制所有不包含雙引號的 JSX 屬性值使用雙引號
"key-spacing": 2, // 對象key之后,冒號前不允許有空格; value前需要有空格
"keyword-spacing": 0, //要求在關鍵字之前、之后都至少有一個空格
"linebreak-style": 2, //強制使用 Unix 換行符: 

"new-cap": 2, //要求構造函數首字母大寫
"newline-after-var": 1, // 變量定義后增加空行 warn
"no-array-constructor": 2, // new Array X 禁用 Array 構造函數
"no-mixed-spaces-and-tabs": 2, // 禁止混用tab與空格 禁止空格和 tab 的混合縮進
"no-multiple-empty-lines": [2, {"max": 2}], // 不能有多個空行,最多兩行
"no-new-object": 2,  //禁用 Object 的構造函數
"no-trailing-spaces": 2, // 行尾不留空格
"object-curly-spacing": 2, //不允許花括號中有空格
"one-var-declaration-per-line": 2, // 一個var定義多個變量時每個變量必須換行
"padded-blocks": [2, "never"], // 其中一條:{}內第一行與最后一行不允許有空行
"quote-props": [2, "consistent"], //對象的屬性名需要統一【 雙引號、單引號、不加】三個選一
"quotes": [2, "single", {"allowTemplateLiterals": true}],
"semi-spacing": 2, // 分號前不加空格
"semi": 2, // 該有分號的地方都加分號
// "sort-keys": 1, //對象的鍵名需要按照字典序排序
// "sort-vars": 1, //變量定義按照字典序排序
"space-before-blocks": 2, // {} 前必須有空格,例如 function() {}
"space-before-function-paren": [2, "never"], // function 參數前不允許有空格
"spaced-comment": [2, "always"], // 注釋后面//后需要增加空格
"arrow-parens": [2, "always"], // 要求箭頭函數的參數使用圓括號
"constructor-super": 2, // 派生類中的構造函數必須調用 super()。非派生類的構造函數不能調用 super()。[字面量繼承其他類的類就是派生類]
"generator-star-spacing": [2, "after"], // 約束 generator 函數強制在 * 和函數名之間有空格
"no-new-symbol": 2, // disallow new operators with the Symbol object 不要new symbol
"no-this-before-super": 2, // 禁止在構造函數中,在調用 super() 之前使用 this 或 super
//"no-var": 1, // 要求使用 let 或 const 而不是 var
//"prefer-rest-params": 1, // require rest parameters instead of arguments
"prefer-spread": 2, // 要求使用擴展運算符而非 .apply() ,參數在一個數組中時
"rest-spread-spacing": 2, // rest參數、擴展運算符 和其對應的表達式都不能有空格 ...args
"yield-star-spacing": [2, "after"], // 強制在 * 和 參數之間有空格 yield* other();
"no-debugger": "error", // 禁用 debugger
"no-sequences": "error", // 禁用逗號操作符
"no-dupe-args": "error", // 禁止 function 定義中出現重名參數
"no-inner-declarations": "error", // 禁止在嵌套的塊中出現 function 聲明 ;if等塊中聲明函數
 "no-unreachable": "error", // 禁止在return、throw、continue 和 break 語句之后出現不可達代碼
"no-octal": "error", // 禁用八進制字面量 0開頭的數字
"no-dupe-keys": "error", // 禁止對象字面量中出現重復的 key
"block-scoped-var": 2, // if,for內無var定義,可以用let // 強制把變量的使用限制在其定義的作用域范圍內
"indent": [2, 4, {
      "SwitchCase": 1
    }],  // 統一縮進4字符,switch case需要縮進
"max-nested-callbacks": [2, 5], // 強制回調函數最大嵌套深度 5層
}
}

可能還需要一個排除檢測文件,和.eslintrc.json同級的目錄下面新建一個文件,名字為: .eslintignore
下面是element ui的排除文件

src/utils/popper.js
src/utils/date.js
*.sh
node_modules
lib
coverage

很多時候其實我們的工程都是在已有的基礎上進行改進的,所以我們可能只是在新增加的代碼上面進行eslint校驗就好:那么就需要.eslintignore的書寫只包含某個文件夾

/*
!/src
/src/*
!/src/page
/src/page/*
!/src/page/flist

上面就是只檢查.eslintignore同級下的src/page/flist這個文件夾。這個.eslintignoregitignore是一樣的規則,
gitignore規則描述
到這里其實還是差一些,安裝了這個eslint的包,生產了配置文件,還需要ide揮著編輯器的配合,所以本文說的是vscode。

vscode+eslint

vscode是一個微軟開源的編輯器,很多插件可以輔助,這個eslint就是一個插件,安裝eslint插件,安裝插件后,會檢測打開的工程是否存在一個eslint的配置文件,存在的話就會執行eslint的檢測,不存在的話就不會檢測。

react+eslint有個問題,react的組件引入時會被認為沒有被使用no-unused-vars,需要引入react插件,引入規則"react/jsx-uses-vars": 2
對于react的使用,一些無狀態的組件雖然沒有顯示的調用react,但是編譯后會使用React.createElement來構造組件,所以還是會出現react沒有被使用no-unused-vars,只能通過注釋來消除

/* eslint-disable */  整個下面塊不檢查
// eslint-disable-next-line  下一行不檢查
import React, {Component} from "react";  // eslint-disable-line   本行不檢查

完整的編寫:

{
    "env": {
        "browser": true,
        "commonjs": true,
        "es6": true
    },
    "extends": "eslint:recommended",
    "parserOptions": {
        "ecmaFeatures": {
            "experimentalObjectRestSpread": true,
            "jsx": true
        },
        "sourceType": "module"
    },
    "plugins": [
        "react"
    ],
    "rules": {
        "no-cond-assign": 0,
        "no-console": 2,
        "no-alert": 2,
        "no-irregular-whitespace": 2,
        "no-unexpected-multiline": 2,
        "guard-for-in": 2,
        "no-caller": 2,
        "no-extend-native": 2,
        "no-extra-bind": 2,
        "no-invalid-this": 1,
        "no-multi-spaces": 2,
        "no-multi-str": 2,
        "no-new-wrappers": 2,
        "no-throw-literal": 2,
        "no-with": 2,
        "no-unused-vars": [2, {"args": "none"}],
        "react/jsx-uses-vars": 2,
        "array-bracket-spacing": [2, "never"],
        "brace-style": 2,
        "comma-dangle": [2],
        "comma-spacing": 2,
        "comma-style": 2,
        "computed-property-spacing": 2,
        "func-call-spacing": 2,
        "jsx-quotes": 2,
        "key-spacing": 2,
        "keyword-spacing": 0,
        "linebreak-style": 2,
        "new-cap": 2,
        "no-array-constructor": 2,
        "no-mixed-spaces-and-tabs": 2,
        "no-multiple-empty-lines": [2, {"max": 2}],
        "no-new-object": 2,
        "no-tabs": 0,
        "no-trailing-spaces": 2,
        "object-curly-spacing": 2,
        "padded-blocks": [2, "never"],
        "quote-props": [2, "consistent"],
        "quotes": [2, "single", {"allowTemplateLiterals": true}],
        "semi-spacing": 2,
        "semi": 2,
        "space-before-blocks": 2,
        "space-before-function-paren": [2, "never"],
        "spaced-comment": [2, "always"],
        "constructor-super": 2,
        "generator-star-spacing": [2, "after"],
        "no-new-symbol": 2,
        "no-this-before-super": 2,
        "no-var": 1,
        "prefer-rest-params": 1,
        "prefer-spread": 2,
        "rest-spread-spacing": 2,
        "yield-star-spacing": [2, "after"],
        "no-debugger": "error",
        "no-sequences": "error",
        "no-dupe-args": "error",
        "no-inner-declarations": "error",
        "no-unreachable": "error",
        "no-octal": "error",
        "no-dupe-keys": "error",
        "block-scoped-var": 2,
        "indent": [2, 4, {
        "SwitchCase": 1
        }],
        "max-nested-callbacks": [2, 5]
        
    }
}

使用vscode的時候,有的時候使用腳手架生成的代碼縮進會是2個空格,大部分時間我們可能需要4個空格,所以在首選項里面可以設置,不檢查代碼的縮進,不管什么情況都是用4空格縮進,"editor.tabSize": 4,"editor.detectIndentation": false

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/88849.html

相關文章

  • ESLint 在中大型團隊應用實踐

    摘要:自動化接入和升級方案通過命令行工具提供一鍵接入升級能力,同時集成到團隊腳手架中,大大降低了工程接入和維護的成本。原始代碼經過解析器的解析,在管道中逐一經過所有規則的檢查,最終檢測出所有不符合規范的代碼,并輸出為報告。 引言 代碼規范是軟件開發領域經久不衰的話題,幾乎所有工程師在開發過程中都會遇到,并或多或少會思考過這一問題。隨著前端應用的大型化和復雜化,越來越多的前端工程師和團隊開始重...

    alogy 評論0 收藏0
  • eslint總結

    摘要:初始命令初始命令如下生成文件自動修復錯誤。第一個是錯誤級別關閉規則將規則視為一個警告不會影響退出碼將規則視為一個錯誤退出碼為可以從基礎配置中繼承已啟用的規則。一旦發現配置文件中有,它就會停止在父級目錄中尋找。 1、初始命令 eslint初始命令如下: (1) eslint --init: 生成.eslintrc.js文件(2) eslint src --fix: 自動修復錯誤。但是只能...

    keke 評論0 收藏0
  • 微豆 - Vue 2.0 實現豆瓣 Web App 教程

    摘要:微豆一個使用與重構豆瓣的項目。在中的配置代理重新啟動,打開查看結果是否與直接請求豆瓣相同。更多請參考豆瓣電影文檔。它采用集中式存儲管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。 微豆 Vdo 一個使用 Vue.js 與 Material Design 重構 豆瓣 的項目。 項目網站 http://vdo.ralfz.com/ GitHub https:...

    cjie 評論0 收藏0
  • /*eslint-disable*/

    摘要:例如在中加入配置塊進行配置例如,直接在代碼文件中以注釋的方式定義需要注意的是,代碼文件內以注釋配置的規則會覆蓋配置文件里的規則,即優先級要更高。 在 Vue-cli 創建的項目中,使用了 ESLint 規范代碼的項目中如何針對單個js文件禁用ESLint語法校驗,但整個項目依然保留 ESLint 的校驗規則? 在代碼頂部添加一行注釋 /eslint-disable/ (兩個/中間有兩...

    scq000 評論0 收藏0
  • webpack多頁應用架構系列(九):總有刁民想害朕!ESLint為你阻擊垃圾代碼

    摘要:本文首發于的技術博客實用至上,非經作者同意,請勿轉載。如果你使用了,或類似的,那么,通過編譯前后的代碼相差就很大了,這會造成兩個問題以為例把你的代碼轉成什么樣你自己是無法控制的,這往往導致無法通過的審查。 本文首發于Array_Huang的技術博客——實用至上,非經作者同意,請勿轉載。原文地址:https://segmentfault.com/a/1190000007030775如果您...

    dingding199389 評論0 收藏0

發表評論

0條評論

Brenner

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<