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

資訊專欄INFORMATION COLUMN

eslint的基礎(chǔ)使用

Brenner / 488人閱讀

摘要:我們通過配置一些風(fēng)格,讓來強(qiáng)制提醒我們代碼的風(fēng)格是否符合規(guī)范,所以就是很好的選擇,但是還需要和的結(jié)合來使用。非派生類的構(gòu)造函數(shù)不能調(diào)用。

JavaScript的編程風(fēng)格

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

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

eslint

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

eslint的使用

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

npm install -g eslint

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

eslint --init

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

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

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

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

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

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

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

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

vscode+eslint

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

react+eslint有個(gè)問題,react的組件引入時(shí)會(huì)被認(rèn)為沒有被使用no-unused-vars,需要引入react插件,引入規(guī)則"react/jsx-uses-vars": 2
對于react的使用,一些無狀態(tài)的組件雖然沒有顯示的調(diào)用react,但是編譯后會(huì)使用React.createElement來構(gòu)造組件,所以還是會(huì)出現(xiàn)react沒有被使用no-unused-vars,只能通過注釋來消除

/* eslint-disable */  整個(gè)下面塊不檢查
// 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的時(shí)候,有的時(shí)候使用腳手架生成的代碼縮進(jìn)會(huì)是2個(gè)空格,大部分時(shí)間我們可能需要4個(gè)空格,所以在首選項(xiàng)里面可以設(shè)置,不檢查代碼的縮進(jìn),不管什么情況都是用4空格縮進(jìn),"editor.tabSize": 4,"editor.detectIndentation": false

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/88849.html

相關(guān)文章

  • ESLint 在中大型團(tuán)隊(duì)應(yīng)用實(shí)踐

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

    alogy 評論0 收藏0
  • eslint總結(jié)

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

    keke 評論0 收藏0
  • 微豆 - Vue 2.0 實(shí)現(xiàn)豆瓣 Web App 教程

    摘要:微豆一個(gè)使用與重構(gòu)豆瓣的項(xiàng)目。在中的配置代理重新啟動(dòng),打開查看結(jié)果是否與直接請求豆瓣相同。更多請參考豆瓣電影文檔。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化。 微豆 Vdo 一個(gè)使用 Vue.js 與 Material Design 重構(gòu) 豆瓣 的項(xiàng)目。 項(xiàng)目網(wǎng)站 http://vdo.ralfz.com/ GitHub https:...

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

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

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

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

    dingding199389 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<