欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ESLint 是如何檢查 .vue 文件的

 更新時(shí)間:2020年11月30日 09:28:39   作者:梅旭光  
這篇文章主要介紹了ESLint 是如何檢查 .vue 文件的,幫助大家更好的理解和使用ESLINT,感興趣的朋友可以了解下

近期要做一個(gè)類(lèi)似的內(nèi)容,學(xué)習(xí)了一下 Vue 是如何做的。

ESLint 中的擴(kuò)展機(jī)制

首先需要了解一下如何才能擴(kuò)展 ESLint 的功能。ESLint 擴(kuò)展機(jī)制主要有 Rules、Plugins、Formatters、Parsers,F(xiàn)ormatters 目前不需要用到,因此著重看一下其他三種方式。

Parser

用于自定義的解析文件內(nèi)容,返回 AST 給后續(xù)步驟使用。

Rules

用于定義校驗(yàn)規(guī)則。

Plugins

plugin 是多種功能的一個(gè)集合,可以定義以下內(nèi)容:

  • Rules:校驗(yàn)規(guī)則。
  • Environments:環(huán)境變量。
  • Processors:處理文件前后的鉤子函數(shù)。preprocess、postprocess。
  • Configs:一些預(yù)置的配置,可以讓用戶指定使用。

Vue 相關(guān)代碼庫(kù)

用于 .vue 文件的 eslint 代碼庫(kù)有兩個(gè):eslint-plugin-vuevue-eslint-parser。

eslint-plugin-vue 用于提供 Rules。

vue-eslint-parser 用于解析 .vue 文件,尤其是 template 部分。

eslint-plugin-vue

入口文件為 lib/index.js,其中設(shè)置了三部分內(nèi)容,rules、configs 和 processors。

rules

rules 部分對(duì)應(yīng)著非常多的校驗(yàn)規(guī)則,放在 rules 目錄下。rules 中關(guān)于 template 部分的校驗(yàn),處理的是 vue-eslint-parser 中生成的 AST,這個(gè) AST 的格式定義可以在這里查看:https://github.com/vuejs/vue-eslint-parser/blob/master/docs/ast.md

configs

configs 部分預(yù)置了很多配置選項(xiàng),不同選項(xiàng)的區(qū)別主要在于 rules 的開(kāi)關(guān)設(shè)置不同,我們不需要關(guān)心。這里我們主要看 base 配置中的 parser 部分:

parser 制定為了 vue-eslint-parser,這就是為什么我們不用手動(dòng)裝 vue-eslint-parser,而只需要安裝 eslint-plugin-vue 的原因。

processors

最后一部分是 processors,他是一個(gè)對(duì)象:

其中 preprocess 沒(méi)有做任何事情,直接將 code 返回了。

有時(shí)文件中會(huì)有一些注釋來(lái)開(kāi)啟關(guān)閉某些 rules,而 postprocess 所做的內(nèi)容是根據(jù)這些注釋對(duì) messages 做一個(gè)過(guò)濾。

vue-eslint-parser

vue-eslint-parser 的入口文件是 src/index.ts,該文件暴露出了 parseForESLint 和 parse 方法,這兩個(gè)方法做的事情是一樣的:輸入原始代碼,返回解析后的 AST。

由于配置 parser 后,所有文件都會(huì)經(jīng)過(guò) vue-eslint-parser,因此需要判斷是否是 .vue 文件,如果不是的話,使用 espree (ESLint 默認(rèn)的 JS 解析器) 或用戶自定義的其他 parser 來(lái)處理 js 文件內(nèi)容。

如果判斷是 vue 文件,那么會(huì)對(duì) HTMLParser 來(lái)解析 .vue 文件內(nèi)容,獲取到 script 和 template 部分。script 部分使用 espree 或用戶自定義的其他 parser 來(lái)處理 js 內(nèi)容,template 部分則已經(jīng)由 HTMLParser 解析過(guò)了,直接使用即可。

總體流程

最后是總體的流程:

以上就是ESLint 是如何檢查 .vue 文件的的詳細(xì)內(nèi)容,更多關(guān)于ESLint 檢測(cè).vue文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在Vue中使用scoped屬性實(shí)現(xiàn)樣式隔離的原因解析

    在Vue中使用scoped屬性實(shí)現(xiàn)樣式隔離的原因解析

    scoped是Vue的一個(gè)特殊屬性,可以應(yīng)用于<style>標(biāo)簽中的樣式,這篇文章給大家介紹在Vue中,使用scoped屬性為什么可以實(shí)現(xiàn)樣式隔離,感興趣的朋友一起看看吧
    2023-12-12
  • vuejs中使用mixin局部混入/全局混入的方法詳解

    vuejs中使用mixin局部混入/全局混入的方法詳解

    混入可以省很多代碼(高類(lèi)聚低耦合),還方便維護(hù),下面這篇文章主要給大家介紹了關(guān)于vuejs中使用mixin局部混入/全局混入的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Vue收集依賴(lài)與觸發(fā)依賴(lài)源碼刨析

    Vue收集依賴(lài)與觸發(fā)依賴(lài)源碼刨析

    vue對(duì)依賴(lài)的管理使用的是發(fā)布訂閱者模式,其中watcher扮演訂閱者,Dep扮演發(fā)布者。所以dep中會(huì)有多個(gè)watcher,一個(gè)訂閱者也可以有多個(gè)發(fā)布者(依賴(lài))??偣踩齻€(gè)過(guò)程:定義依賴(lài)、收集依賴(lài)、觸發(fā)依賴(lài)。下面開(kāi)始詳細(xì)講解三個(gè)過(guò)程
    2022-10-10
  • 一文帶你深入理解Vue3響應(yīng)式原理

    一文帶你深入理解Vue3響應(yīng)式原理

    響應(yīng)式就是當(dāng)對(duì)象本身(對(duì)象的增刪值)或者對(duì)象屬性(重新賦值)發(fā)生變化時(shí),將會(huì)運(yùn)行一些函數(shù),最常見(jiàn)的就是render函數(shù),下面這篇文章主要給大家介紹了關(guān)于Vue3響應(yīng)式原理的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • vue獲取或者改變vuex中的值方式

    vue獲取或者改變vuex中的值方式

    這篇文章主要介紹了vue獲取或者改變vuex中的值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 淺談Vue.js組件(二)

    淺談Vue.js組件(二)

    這篇文章主要介紹了Vue.js組件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Vue3?函數(shù)式彈窗的實(shí)例小結(jié)

    Vue3?函數(shù)式彈窗的實(shí)例小結(jié)

    這篇文章主要介紹了Vue3?函數(shù)式彈窗的實(shí)例小結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-11-11
  • vue和webpack項(xiàng)目構(gòu)建過(guò)程常用的npm命令詳解

    vue和webpack項(xiàng)目構(gòu)建過(guò)程常用的npm命令詳解

    本文通過(guò)實(shí)例代碼給大家介紹了vue和webpack項(xiàng)目構(gòu)建過(guò)程常用的npm命令,需要的朋友可以參考下
    2018-06-06
  • vue3實(shí)現(xiàn)CSS無(wú)限無(wú)縫滾動(dòng)效果

    vue3實(shí)現(xiàn)CSS無(wú)限無(wú)縫滾動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了vue3實(shí)現(xiàn)CSS無(wú)限無(wú)縫滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue?+?Element?實(shí)現(xiàn)按鈕指定間隔時(shí)間點(diǎn)擊思路詳解

    Vue?+?Element?實(shí)現(xiàn)按鈕指定間隔時(shí)間點(diǎn)擊思路詳解

    這篇文章主要介紹了Vue?+?Element?實(shí)現(xiàn)按鈕指定間隔時(shí)間點(diǎn)擊,實(shí)現(xiàn)思路大概是通過(guò)加一個(gè)本地緩存的時(shí)間戳,通過(guò)時(shí)間戳計(jì)算指定時(shí)間內(nèi)不能點(diǎn)擊按鈕,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧
    2023-12-12

最新評(píng)論