最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在React項(xiàng)目中使用Eslint代碼檢查工具及常見(jiàn)問(wèn)題

 更新時(shí)間:2018年10月10日 10:19:12   作者:xuweijian  
這篇文章主要介紹了在React項(xiàng)目中使用Eslint代碼檢查工具及常見(jiàn)問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

背景

最近使用 create-react-app 創(chuàng)建了一個(gè)項(xiàng)目。但是眾所周知的是,這個(gè)腳手架創(chuàng)建的項(xiàng)目并沒(méi)有默認(rèn)加入 Eslint 等 lint 插件來(lái)規(guī)范代碼。

考慮到項(xiàng)目中很多項(xiàng)目沒(méi)有使用類似的代碼檢查工具,為了規(guī)范開(kāi)發(fā)。這次有必要記錄一下流程。

使用 Eslint 流程

1. 安裝 Eslint

首先,先安裝 Eslint 到項(xiàng)目本地(全局安裝亦可)。

npm --save-dev install eslint

安裝完成之后,我們先創(chuàng)建基礎(chǔ)的 .eslintrc.yml (建議使用 .yml 格式,json/js 格式也可以):

./node_modules/.bin/eslint --init ## 全局安裝,可用 `eslint --init`

輸入上述命令之后,會(huì)出現(xiàn)詢問(wèn)界面:

? How would you like to configure ESLint? (Use arrow keys)
  Use a popular style guide
❯ Answer questions about your style
  Inspect your JavaScript file(s)

選擇“Answer questions about your style”,后面有一些問(wèn)題,根據(jù)實(shí)際進(jìn)行選擇。

上述操作完成之后,會(huì)幫我們創(chuàng)建一個(gè)基礎(chǔ)的 .eslintrc.yml 文件。我們也可以使用 touch .eslintrc.yml 自行創(chuàng)建。

2. 安裝 babel-eslint

由于項(xiàng)目中需要使用到 ES2015 的語(yǔ)言規(guī)范,因此需要安裝 babel-eslint :

npm install --save-dev babel-eslint

安裝完成之后,我們需要在 .eslintrc.yml 中修改配置

parser: "babel-eslint"

【注意】:若沒(méi)有該項(xiàng),曾手動(dòng)增加

3. 安裝 eslint-plugin-react

項(xiàng)目中需要使用 React 框架,需要識(shí)別出 React 特定的語(yǔ)法規(guī)則和要求,需要安裝 eslint-plugin-react :

npm install --save-dev eslint-plugin-react

安裝完成之后,我們需要引入該 Eslint 組件。修改 .eslintrc.yml 配置:

plugins:
 - react

特別提醒:YML語(yǔ)法規(guī)則中表示數(shù)組格式:- 開(kāi)頭,后面為數(shù)組元素,如此處的 react。屬性值中若不含特殊字符,可以不加上雙引號(hào)。

4. 安裝 Airbnb

到現(xiàn)在為止,我們只使用了一些默認(rèn)創(chuàng)建的校驗(yàn)規(guī)則,為了避免我們自己按照 Eslint 的規(guī)則一個(gè)一個(gè)來(lái)個(gè)性化定制規(guī)則,很是麻煩。這里我們使用 GitHub - airbnb/javascript: JavaScript Style Guide 規(guī)范來(lái)定義規(guī)則。這就需要安裝如下插件:

npm i --save-dev eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y

接著,我們修改 .eslintrc.yml 配置,將擴(kuò)展插件變更為 Airbnb :

extends: "airbnb"

到此,靜態(tài)代碼檢查工具安裝結(jié)束。

檢查 Git 提交的代碼

除了靜態(tài)代碼檢查,我們還設(shè)置一道關(guān)卡來(lái)保證提交的代碼符合規(guī)范。這就需要使用到我們主角 pre-commit 鉤子。
這里假設(shè)項(xiàng)目中使用 Git 進(jìn)行代碼的提交操作。

首先在 package.json 中增加如下腳本指令:

{
 "scripts": {
  "lint": "eslint --ext .js --ext .jsx src"
 }
}

這里將檢查目錄 src 下面所有以 .js或.jsx 格式結(jié)尾的代碼文件。

然后,安裝 pre-commit ,以便檢查提交操作:

先執(zhí)行安裝 npm install --save-dev pre-commit,然后在 package.json 中增加下面配置。

{
 "pre-commit": [
  "lint"
 ]
}

這里的 lint 對(duì)應(yīng)第 1 步中增加的腳本命令名。

完成之后,在每次提交代碼之前,pre-commit 都會(huì)攔截 Git 的 commit 操作,然后運(yùn)行 lint 命令進(jìn)行代碼檢測(cè),若檢測(cè)到有違反校驗(yàn)規(guī)則的情況,則會(huì)返回錯(cuò)誤,從而導(dǎo)致 git commit 失敗。

遇到的問(wèn)題

1. 代碼檢查,.js 文件不支持 jsx。

error  JSX not allowed in files with extension '.js'  react/jsx-filename-extension

此時(shí)需要增加配置以便支持在 .js 文件中支持使用 JSX 語(yǔ)法。

rules:
 react/jsx-filename-extension: 
  - warn
  - extensions:
   - ".js" # .js 文件適用
   - ".jsx"

2. 代碼中 process.env 報(bào)錯(cuò)

此處需要支持 node 語(yǔ)法。增加配置:

env:
 node: true

3. 代碼檢查了 serviceWorker.js 等第三方組件文件

有時(shí)項(xiàng)目中存在一些已經(jīng)編譯好的的JS文件,無(wú)需進(jìn)行代碼檢查,此時(shí)需要增加 .eslintignore 文件來(lái)告訴 Eslint 忽略一下文件的檢查,如:

# node_modules
node_modules/

# build
build/

# dist
dist/

# serviceWorker
src/serviceWorker.js

總結(jié)

一句話總結(jié),我們需要Eslint插件實(shí)現(xiàn)代碼檢查,需要 Airbnb 來(lái)簡(jiǎn)化校驗(yàn)規(guī)則的編寫(xiě),需要 pre-commit 來(lái)攔截提交操作,最大限度保證倉(cāng)庫(kù)中的代碼是符合規(guī)范要求的。

其他項(xiàng)目(如Vue項(xiàng)目)需要使用到 Eslint 和 pre-commit,如上配置即可,不同支持在于是否配置支持 react。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解操作虛擬dom模擬react視圖渲染

    詳解操作虛擬dom模擬react視圖渲染

    這篇文章主要介紹了詳解操作虛擬dom模擬react視圖渲染,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • React useEffect的理解與使用

    React useEffect的理解與使用

    useEffect是react v16.8新引入的特性。我們可以把useEffect hook看作是componentDidMount、componentDidUpdate、componentWillUnmounrt三個(gè)函數(shù)的組合
    2022-12-12
  • React高級(jí)概念之Context用法詳解

    React高級(jí)概念之Context用法詳解

    在React應(yīng)用中,為了讓數(shù)據(jù)在組件間共享,常見(jiàn)的方式是讓它們以props的形式自頂向下傳遞,如果數(shù)據(jù)要在組件樹(shù)不同層級(jí)共享,那么這些數(shù)據(jù)必須逐層傳遞直到目的地,Context如同管道,它將數(shù)據(jù)從入口直接傳遞到出口,使用Context能避免“prop-drilling”
    2023-06-06
  • React?Context詳解使用方法

    React?Context詳解使用方法

    Context提供了一個(gè)無(wú)需為每層組件手動(dòng)添加props,就能在組件樹(shù)間進(jìn)行數(shù)據(jù)傳遞的方法。在一個(gè)典型的?React?應(yīng)用中,數(shù)據(jù)是通過(guò)props屬性自上而下(由父及子)進(jìn)行傳遞的,但這種做法對(duì)于某些類型的屬性而言是極其繁瑣的
    2022-12-12
  • React中前端路由的示例代碼

    React中前端路由的示例代碼

    本文主要介紹了React中前端路由的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 提高React界面性能的十個(gè)技巧

    提高React界面性能的十個(gè)技巧

    眾所周知,性能是Web應(yīng)用界面的關(guān)鍵方面,它直接影響到用戶的使用體驗(yàn)。本文將向您展示十種提高React UI性能的特定技術(shù)和一般方法。
    2021-05-05
  • react中useRef的應(yīng)用使用詳解

    react中useRef的應(yīng)用使用詳解

    這篇文章主要介紹了react中useRef的應(yīng)用使用詳解的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • React 中的重新渲染實(shí)現(xiàn)

    React 中的重新渲染實(shí)現(xiàn)

    本文主要介紹了React 中的重新渲染實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 詳解在React項(xiàng)目中安裝并使用Less(用法總結(jié))

    詳解在React項(xiàng)目中安裝并使用Less(用法總結(jié))

    這篇文章主要介紹了詳解在React項(xiàng)目中安裝并使用Less(用法總結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • React組件的使用詳細(xì)講解

    React組件的使用詳細(xì)講解

    React組件分為函數(shù)組件與class組件;函數(shù)組件是無(wú)狀態(tài)組件,class稱為類組件;函數(shù)組件只有props,沒(méi)有自己的私有數(shù)據(jù)和生命周期函數(shù);class組件有自己私有數(shù)據(jù)(this.state)和生命周期函數(shù)
    2022-11-11

最新評(píng)論

金门县| 从化市| 文昌市| 喀喇沁旗| 嵊泗县| 寿宁县| 曲沃县| 漠河县| 北票市| 涞水县| 云浮市| 隆昌县| 塔河县| 赤峰市| 平罗县| 炎陵县| 满洲里市| 天全县| 顺平县| 平和县| 泸水县| 磐石市| 克东县| 云浮市| 连州市| 奇台县| 峡江县| 自治县| 怀安县| 青海省| 台北县| 苍溪县| 榕江县| 百色市| 孙吴县| 北安市| 砚山县| 黄石市| 敦煌市| 房山区| 许昌市|