精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從 Babel Preset 和 Eslint Config 看配置的繼承和重寫

開發 架構
繼承和重寫是面向對象編程語言中的概念,是指一個類擴展自父類,并且重新實現了其中一些屬性、方法。這種思想不只是在編程語言中會用到,在配置文件中也有廣泛的應用。

[[423279]]

繼承和重寫是面向對象編程語言中的概念,是指一個類擴展自父類,并且重新實現了其中一些屬性、方法。這種思想不只是在編程語言中會用到,在配置文件中也有廣泛的應用。

本文我們分別從 babel 和 eslint 的配置文件來重新審視一下繼承和重寫。

Javascript 中的繼承和重寫

我們定義一個 Person 類,它有 eat、sleep、getSkills 3 個方法。

  1. class Person { 
  2.     eat(){} 
  3.     sleep() {} 
  4.     getSkills() {} 

然后定義一個 Guang 類,繼承自 Person,重寫 getSkills 方法。

  1. class Guang extends Person { 
  2.     getSkills() { 
  3.         return ['babel''eslint''vscode''node.js'
  4.     } 

創建 Guang 的實例對象,這個對象就有 eat、sleep 方法,并且有重寫后的 getSkills 方法了。

這是一種重要的語言特性,Javascript 中是通過原型鏈實現的。

babel 配置中的繼承和重寫

babel 是微內核架構,所有的代碼轉換都是通過插件來完成的。es2015 需要指定一堆插件、es2016 也要指定一堆插件,為了簡化這些插件的配置,eslint 支持把一系列插件封裝成一個 preset,在配置文件中指定 preset 的方式來引入具體的插件。

于是 babel6 就有了 preset-es2015、preset-es2016 等 preset,后來 babel7 還支持了指定目標環境來動態指定一系列插件的 preset-env。

preset 就是把一些插件封裝到一起。比如:

  1. module.exports = function() { 
  2.     return {  
  3.         plugins: ["pluginA""pluginB""pluginC"
  4.     };  
  5. }; 

而且 preset 里也可以繼承 preset:

  1. module.exports = function() { 
  2.     return {  
  3.         preset: ['presetA'
  4.         plugins: ["pluginA""pluginB""pluginC"
  5.     };  
  6. }; 

這就像 Javascript 里面 C 繼承了 B,B 繼承了 A 一樣,而且配置里還是多繼承的。

babel 插件生效的順序是先 plugin 后 preset,plugin 從左到右,preset 從右到左,這樣的生效順序使得配置里的插件是可以覆蓋 preset 里面插件的配置的,也就是重寫。

除了整體的插件的 override 以外,babel 還支持了文件級別、環境級別的 override:

文件級別的重寫:

在配置中可以設置對什么文件重寫什么配置:

  1. overrides: [ 
  2.     {  
  3.         test: "./xxx.js",  
  4.         plugins: ['pluginX'
  5.     } 

當編譯這個文件的時候,就會把這些 option 合并到主 option 中。

比如 ts 和 js 需要的 plugin、preset 和其他配置都不一樣,通過 override 就可以分別指定。

環境級別的重寫:

當文件級別的配置重寫還不夠,有時候開發環境和生產環境也要使用不同的插件等,所以 babel 還支持了環境級別的重寫:

  1. envName: 'development'
  2. env: { 
  3.     development: { 
  4.         plugins: ['pluginA'
  5.     }, 
  6.     production: { 
  7.         plugins: ['pluginB'
  8.     } 

通過 envName 來啟用不同的不同環境的配置,合并到主配置中。

這個 envName 其實不需要設置,默認是 process.env.BABEL_ENV 或者 process.env.NODE_ENV 的值。

可以看到,babel 支持了把插件封裝成 preset,preset 和 preset 之間還可以繼承,因為 生效順序是先 plugin 后 preset,所以可以達到重寫的目的。而且還可以文件級別和環境級別的重寫,分別通過 overrides 和 env 的配置。

eslint 配置中的繼承和重寫

eslint 的配置同樣支持封裝,不過不叫 preset,而叫 sharable config。因為 babel 的 preset 更多是為了簡化配置的,而 eslint 的 config 的目的不是簡化配置,而是共享配置,所以叫做 sharable config。

eslint 中可以使用 extends 來繼承一個 config:

  1.     "plugins": [ 
  2.         "react" 
  3.     ], 
  4.     "extends": [ 
  5.         "eslint:recommended"
  6.         "plugin:react/recommended" 
  7.         "./aaa/.eslintrc-jsx" 
  8.     ], 
  9.     "rules": { 
  10.        "no-set-state""off" 
  11.     } 

sharable config 的路徑可以通過 eslint: 來指定內置的 config,通過 plugin: 來指定插件里的 config,通過相對路徑來指定任意位置的 config。

具體的 config 就包含了各種共享的配置,而且也支持繼承自某個配置。

  1. module.exports = { 
  2.     rules: { 
  3.         'no-alert': 2 
  4.     }, 
  5.     extends: 'myconfig/lib/defaults' 
  6. }; 

這里要注意下配置的 rule 的合并規則:

如果只重寫了錯誤級別,那么 option 會繼承。

  1. rule: { 
  2.     ruleA: ['error'], //只重寫錯誤級別,option 會繼承 
  3.     ruleB: ['warn''aaa']//錯誤級別和 option 都重寫 

除了整體配置的重寫之外,也同樣支持文件級別的重寫:

  1. "overrides": [ 
  2.     { 
  3.         "files": ["**/*.md/*.js"], 
  4.         "rules": { 
  5.             "strict""off" 
  6.         } 
  7.     } 

這樣就可以在 lint 不同文件的時候使用不同的 rule,比如 ts 和 js 就需要用不同的 rule。

eslint 里有環境級別的重寫么?

沒有。babel 有環境級別的配置重寫是因為是需要生成代碼的,不同環境生成的代碼可能要有些區別。而 eslint 并不需要生成代碼,只是對源碼的 lint,所以不需要環境級別的配置重寫。

eslint 也有 env 配置,但是和 babel 的 env 不同:

  1. "env": { 
  2.     "es6"true 

eslint 的 env 配置是指定運行環境的,babel 的 env 配置是指定不同環境要重寫的配置的,兩者是不同的作用。

可以看到,eslint 支持了把配置封裝成 sharable config,config 和 config 之間還可以通過 extends 繼承,而且還支持通過 overrides 指定文件級別的重寫,但是不需要支持環境級別的重寫。

總結

繼承和重寫是一種常見的思想,不只是在編程語言的語法中,在配置文件中也有很多應用。

babel 和 eslint 都支持把一部分配置進行封裝,達到復用和簡化配置的目的,但是 babel 中叫 preset,eslint 中叫 sharable config,因為一個主要是為了簡化配置,一個主要是為了共享。

除了整體配置的重寫之外,babel 還支持文件級別的重寫(overrides)和環境級別的重寫(env),eslint 中支持文件級別的重寫(overrides)。

 

繼承和重寫是一種思想,不只是體現在編程語言的語法中,在配置文件領域也有很多應用。

 

責任編輯:武曉燕 來源: 神光的編程秘籍
相關推薦

2021-09-02 16:15:29

開發技能代碼

2021-09-02 13:38:48

Eslint Babel 插件

2022-01-18 18:46:55

Eslint抽象語法樹Babel

2021-11-19 23:54:19

插件Eslint

2015-04-16 14:24:56

Hadoop云計算HDFS

2015-03-09 10:18:23

2010-07-12 13:19:41

Meego開發

2009-07-14 17:36:28

Jython的繼承

2009-09-23 11:22:55

軟件

2009-09-04 17:34:11

C#CC++

2011-06-08 09:22:54

Samba

2021-10-14 08:58:48

Java冒泡排序

2021-09-17 13:44:03

httpsssh 網絡

2017-11-14 18:54:43

MySQLMongoDBNoSQL

2009-06-14 18:43:57

LinuxWindows對比

2017-08-09 21:04:56

2012-07-19 10:28:15

JMPMinitab

2009-05-19 11:57:13

memcached分布式緩存MySQL

2021-09-07 13:06:32

Eslint Fix 功能算法
點贊
收藏

51CTO技術棧公眾號

给我看免费高清在线观看| 91久久久久久国产精品| 欧美一区二区免费在线观看| 蜜桃传媒在线观看免费进入 | 国产在线精品成人一区二区三区| 中文字幕乱视频| 国产资源在线观看入口av| wwwwww.欧美系列| 国产精品国模在线| 亚洲天堂黄色片| 麻豆成人入口| 欧洲精品一区二区| 中国女人做爰视频| 天堂在线视频免费观看| 午夜在线视频一区二区区别| 国产一区二区三区直播精品电影| 男人的天堂最新网址| 2024短剧网剧在线观看| 99久久国产综合精品麻豆| 91成人天堂久久成人| 国产精品美女高潮无套| 欧美一区一区| 欧美性猛交xxxx| 欧美日韩亚洲综合一区二区三区激情在线 | 亚洲av永久无码精品| 五月天国产在线| 蜜桃视频污在线观看| 视频在线在亚洲| 亚洲男女性事视频| 亚洲制服在线观看| 极品美女一区| 夜夜夜精品看看| 色吧亚洲视频| 国模人体一区二区| 精品一区二区三区香蕉蜜桃| 欧美激情影音先锋| 亚洲精品国产91| 9l视频自拍九色9l视频成人| 在线视频综合导航| 久艹在线免费观看| 日本高清中文字幕在线| 国产精品香蕉一区二区三区| 国产成人亚洲综合青青| 国产无遮挡aaa片爽爽| 久久综合av| 亚洲国产精品电影| 波多野结衣免费观看| 黄色成人小视频| 欧美视频裸体精品| 久久综合久久网| 日本三级在线视频| 日本一区二区三区视频视频| 国模精品一区二区三区| 国产黄色片av| 久久国产一二区| 国模吧一区二区| 国产大片免费看| 久久高清免费| 日韩在线视频观看| 国产毛片久久久久久久| 啪啪国产精品| 日韩精品在线电影| 成年人的黄色片| 国产劲爆久久| 日韩欧美国产精品一区| 在线观看视频你懂得| 国产成+人+综合+亚洲欧美| 一本一道综合狠狠老| a√天堂在线观看| 色戒汤唯在线观看| 精品动漫一区二区| 国产盗摄视频在线观看| 黄色动漫在线| 亚洲欧美日韩在线播放| 中文字幕一区二区三区最新| 神马电影在线观看| 久久久久久久精| 日本欧美色综合网站免费| 熟妇人妻系列aⅴ无码专区友真希 熟妇人妻av无码一区二区三区 | 精品久久久久久久久久久久久 | 日韩成人av毛片| 在线观看视频你懂得| 91精品久久久久久久久青青| 欧美日韩一区二区三区| 88国产精品视频一区二区三区| 欧美zzoo| 成人精品三级| 亚洲在线观看免费| 真人抽搐一进一出视频| 影音先锋成人资源网站| 四虎在线视频免费观看| av亚洲精华国产精华精华| 成人黄色片在线| 99国产精品久久久久久久成人| 国产精品亚洲专一区二区三区| 成人av免费看| 日韩一二三四| 欧美激情综合在线| 色香蕉在线观看| 色老头在线观看| 性感美女极品91精品| 国产精品专区在线| 91精品韩国| 91精品国产欧美一区二区| 熟妇高潮一区二区| 欧美极品在线观看| 久久久精品999| 91精品国产高潮对白| 天堂久久久久va久久久久| 国产精品一香蕉国产线看观看| www.久久久久久久| 美女www一区二区| 亚洲最大福利视频网| 亚洲色偷精品一区二区三区| 国产精品对白交换视频 | 羞羞答答一区二区| 亚洲欧美精品中文字幕在线| 992在线观看| 亚洲国产免费| 成人国产精品一区二区| 四虎影视精品成人| 综合久久久久久| 国产日产欧美视频| 欧美高清你懂的| 亚洲成人亚洲激情| 久久噜噜色综合一区二区| 影院欧美亚洲| 国产日韩欧美在线| 色就是色亚洲色图| 亚洲一区免费在线观看| 国产精品久久久毛片| 任我爽精品视频在线播放| 日韩在线观看免费高清完整版| 国产精品美女毛片真酒店| 欧美aaa在线| 精品国产区在线| 成人影院在线看| 亚洲国产精品影院| www.偷拍.com| 久久精品国产亚洲夜色av网站| 性欧美xxxx视频在线观看| 中文字幕人妻互换av久久| 99久久精品99国产精品| 免费的一级黄色片| 精品中文字幕一区二区三区四区| 国产亚洲精品高潮| 亚洲国产综合久久| 成人午夜短视频| 久久天天东北熟女毛茸茸| 日韩毛片在线| 亚洲深夜福利网站| 成人午夜淫片100集| 国产成都精品91一区二区三| 自拍偷拍亚洲色图欧美| 国产精品久久久久久妇女| 精品亚洲国产视频| 日韩成人高清视频| 91麻豆文化传媒在线观看| 欧美污视频网站| 国产最新精品| 国产啪精品视频网站| 免费观看在线黄色网| 制服丝袜中文字幕一区| 五月婷婷一区二区| 不卡视频一二三| 欧美激情精品久久久久久小说| 蜜乳av综合| 国产精品网址在线| av免费在线观看网站| 欧美成人video| 国产又大又黑又粗免费视频| 91免费观看视频| 韩国中文字幕av| 久久久久久影院| 国产传媒一区二区三区| 午夜影院在线播放| 这里精品视频免费| 视频一区国产精品| 成人一区二区不卡免费| 欧美日韩精品免费| 欧美极品aaaaabbbbb| 99久久综合99久久综合网站| 精品久久久噜噜噜噜久久图片| 999久久久国产精品| 国产精品99久久久久久久| 男人的天堂免费在线视频| 中文国产成人精品| 亚洲国产成人一区二区| 日本精品一级二级| 曰本女人与公拘交酡| 26uuu久久天堂性欧美| 欧美三级午夜理伦三级富婆| 国产一区观看| 神马影院午夜我不卡| 日韩高清二区| 国产成人在线一区二区| 午夜小视频在线观看| 亚洲欧美日韩天堂一区二区| 91丨porny丨在线中文 | 国产尤物在线视频| 1000部国产精品成人观看| 99久久免费看精品国产一区| 男女性色大片免费观看一区二区| 国产毛片久久久久久国产毛片| 成人精品影院| 黄色99视频| 精品国产鲁一鲁****| 国产成人精品a视频一区www| 久操av在线| 最新日韩中文字幕| 欧美精品久久久久久久久久丰满| 在线综合+亚洲+欧美中文字幕| 在线能看的av| 亚洲一区二区欧美| 黄色录像一级片| 国产午夜精品一区二区三区嫩草 | 国产精品 欧美在线| av电影院在线看| 欧美精品在线看| 久久国产精品一区| 揄拍成人国产精品视频| 日韩一级在线播放| 日韩欧美成人午夜| 91高潮大合集爽到抽搐| 色婷婷久久99综合精品jk白丝| 精品肉丝脚一区二区三区| 中文字幕在线观看一区| 亚洲无人区码一码二码三码的含义| 99久久综合99久久综合网站| 中文字幕99页| 国产精品中文字幕欧美| 日本中文字幕精品—区二区| 久久精品主播| 免费毛片小视频| 一区二区三区导航| av免费看网址| 亚洲经典在线看| 亚洲精品久久久久久久蜜桃臀| 欧美激情91| 超碰97在线看| 欧美日本一区| 久久久久99精品成人片| 欧美日韩一区二区高清| 日本a在线天堂| 欧美久久久久| 日韩视频在线视频| 日韩一级在线| 能在线观看的av| 久久精品日产第一区二区| 欧美私人情侣网站| 久久久噜噜噜| 国产主播中文字幕| 蜜臀99久久精品久久久久久软件| 亚洲综合欧美激情| 九九九久久久精品| 一级 黄 色 片一| 国产成人在线视频免费播放| 催眠调教后宫乱淫校园| 99精品视频在线观看| 人妻熟女aⅴ一区二区三区汇编| 久久中文字幕电影| 国产三级短视频| 最近日韩中文字幕| 激情五月少妇a| 五月婷婷综合网| 国产一级片免费在线观看| 欧美三级电影精品| 99国产精品久久久久久久成人 | 偷拍25位美女撒尿视频在线观看| 精品国一区二区三区| 色呦呦中文字幕| 亚洲图片欧美午夜| 日本在线视频网| 欧美成人精品xxx| 蜜桃av.网站在线观看| 日韩免费在线看| а天堂中文最新一区二区三区| 91在线看网站| 亚洲精品国产精品粉嫩| 亚洲女人毛片| 亚洲视频高清| 无码人妻精品一区二区三区66| 久草中文综合在线| 呦呦视频在线观看| 国产精品萝li| 国产午夜久久久| 欧美在线观看视频一区二区三区| 国产男女无套免费网站| 日韩av有码在线| 免费在线观看黄| 欧美在线免费观看| 精品视频在线观看免费观看| 久久riav二区三区| 91精品国产调教在线观看| 免费无码不卡视频在线观看| 激情五月激情综合网| 欧美精品欧美极品欧美激情| 国产精品久久久久久福利一牛影视 | 国产精品视频99| 成人亚洲视频| 国产日韩欧美二区| 91精品精品| 成年人小视频网站| 粉嫩蜜臀av国产精品网站| 特级西西人体高清大胆| 午夜久久福利影院| 国产农村妇女毛片精品久久| 亚洲欧美日本精品| 国产羞羞视频在线播放| 国产精品普通话| 日韩深夜福利| 国产免费内射又粗又爽密桃视频| 日韩1区2区日韩1区2区| 完美搭档在线观看| 国产精品久久久一区麻豆最新章节| 国产精品自拍99| 精品国产免费人成电影在线观看四季| 丁香婷婷在线| 国产成人精品网站| 久久黄色影视| 大伊香蕉精品视频在线| 韩国毛片一区二区三区| 久久久久久成人网| 色婷婷久久久久swag精品| 视频一区二区三区国产| 高清亚洲成在人网站天堂| 日韩精品久久久久久久软件91| 亚洲二区自拍| 日本女人一区二区三区| 永久免费看mv网站入口78| 午夜视频在线观看一区二区三区| 国内老熟妇对白hdxxxx| 久久久极品av| 精品精品视频| 黄色录像特级片| 国产在线观看一区二区| 国产又黄又粗又猛又爽的| 欧美三级日本三级少妇99| 精品视频二区| 国产精品扒开腿爽爽爽视频| 精品久久网站| 亚洲黄色a v| 中文无字幕一区二区三区| 久久午夜鲁丝片| 中文字幕日韩欧美| 久久亚洲精品人成综合网| 亚洲成色www久久网站| 美女在线视频一区| 9.1片黄在线观看| 欧美日韩亚洲高清一区二区| 一本一道波多野毛片中文在线| 国产精品中文字幕在线| 日韩极品一区| 五月激情婷婷在线| 亚洲日本成人在线观看| www.亚洲黄色| 亚洲网站啪啪| 日本熟妇人妻xxxxx| 久久久一区二区三区捆绑**| 亚洲av综合一区| xxx成人少妇69| 国产精品**亚洲精品| www.一区二区.com| 91一区二区三区在线观看| 伊人手机在线视频| 色偷偷偷综合中文字幕;dd| 高清一区二区三区av| 天堂8在线天堂资源bt| 99精品一区二区三区| 中文字幕乱伦视频| 裸体女人亚洲精品一区| 精品久久97| www.涩涩涩| 亚洲国产一区二区三区青草影视| 手机亚洲第一页| 国产在线高清精品| 在线成人黄色| 一级片视频免费看| 日韩无一区二区| 在线天堂资源| 中文字幕在线乱| 99久久久精品免费观看国产蜜| 最新国产中文字幕| 欧美激情第三页| 精品99在线| 国产人成视频在线观看| 在线观看亚洲专区| 牛牛精品在线| 亚洲 日韩 国产第一区| 成人在线一区二区三区| 超碰在线97观看| 国产最新精品视频| 2023国产精品久久久精品双| 日韩av手机在线播放| 欧美日韩国产系列| 碰碰在线视频| 日韩人妻精品一区二区三区| 国产成人欧美日韩在线电影| 在线观看污污网站| 久久久亚洲影院你懂的|