精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久久亚洲午夜电影| 在线观看亚洲| 8v天堂国产在线一区二区| 黄色一级片网址| 亚洲精华国产精华精华液网站| 日韩午夜免费| 中文字幕免费精品一区高清| www.这里只有精品| 波多野结依一区| 久久久久久久久久美女| 亚洲自拍av在线| 亚洲av无码精品一区二区| 亚洲二区三区不卡| 亚洲精品少妇网址| 不卡的一区二区| 一二区成人影院电影网| 一区二区中文字幕在线| 久久www免费人成精品| 国产精品九九九九| 日韩专区中文字幕一区二区| 欧美激情在线一区| 日本成人精品视频| 女优一区二区三区| 亚洲第一精品久久忘忧草社区| 黄大色黄女片18第一次| 一区二区电影免费观看| 亚洲成人中文在线| 亚洲丝袜av一区| 国产极品精品在线观看| 日本污视频网站| 日韩最新在线| 精品久久久久香蕉网| 亚洲天堂网2018| 国产亚洲一区二区手机在线观看| 亚洲第一主播视频| 91传媒免费视频| 欧美激情午夜| 国产精品免费人成网站| 欧美高清性xxxxhdvideosex| 刘亦菲久久免费一区二区| 国产又粗又猛又爽又黄91精品| 日韩暖暖在线视频| 国产成人无码精品亚洲| 国内精品福利| 久久99久久久久久久噜噜| 精品少妇一区二区三区密爱| 成人高清av| 色偷偷av一区二区三区| 国产一二三四区在线| 欧美日中文字幕| 这里只有精品丝袜| 亚洲一二三四视频| 久久视频在线| 久久久91精品国产| 神马久久精品综合| 2023国产精品久久久精品双| 欧美刺激性大交免费视频| 老司机成人免费视频| 久久精品影视| 欧美日韩国产成人| 国产无遮挡又黄又爽又色| 红桃视频亚洲| 久久91超碰青草是什么| 青娱乐在线视频免费观看| 欧美一区视频| 欧美刺激性大交免费视频| 欧美黄色免费看| 亚洲国产网站| 国产91精品在线播放| 中国女人真人一级毛片| 激情六月婷婷综合| 成人欧美一区二区三区视频| 黄色av免费观看| www久久精品| 亚洲综合av一区| 2024最新电影免费在线观看| 亚洲国产成人精品视频| 久久久精品在线视频| 91精品国产66| 欧美大胆人体bbbb| 亚洲国产欧美视频| 日本一本不卡| 欧美激情一区二区三区高清视频| av大片免费在线观看| 日韩和欧美一区二区| 91久久精品国产91久久性色| 蜜桃视频污在线观看| 91蜜桃网址入口| 日本一区二区三区视频在线观看 | 欧美在线看片a免费观看| 欧美伦理片在线观看| 日韩精品三级| 亚洲无亚洲人成网站77777| 波多野结衣久久久久| 亚洲东热激情| 国产欧美韩国高清| 三级视频在线| 一区二区三区四区不卡在线 | a国产在线视频| 日本精品视频一区二区| 杨幂一区二区国产精品| 国产欧美日韩| 久久久久久久久久av| 中文字幕人妻互换av久久| 成人精品视频一区二区三区| 亚洲国产婷婷香蕉久久久久久99| 动漫一区二区| 欧美日韩国产综合视频在线观看 | 国产精品人人妻人人爽人人牛| 国产精品日韩精品在线播放| 亚洲欧美综合另类中字| 免费中文字幕视频| 美女一区二区久久| 久久亚洲高清| av福利在线导航| 欧美精品xxxxbbbb| 国产免费无遮挡吸奶头视频| 亚洲国产日韩在线| av激情久久| 国产一二三区在线观看| 欧美在线免费观看亚洲| 亚洲观看黄色网| 综合天堂久久久久久久| 国产精品爽黄69天堂a| 男男激情在线| 黑人巨大精品欧美一区二区三区| 在线观看欧美一区二区| 91精品啪在线观看国产81旧版| 国产精品精品视频| 欧美日韩国产亚洲沙发| 五月激情丁香一区二区三区| 又大又长粗又爽又黄少妇视频| 国产精品久久天天影视| 国产精品久久久久久久久久久新郎| 天天操天天舔天天干| 亚洲综合区在线| 亚洲 自拍 另类 欧美 丝袜| 亚洲国产一成人久久精品| 国产精品偷伦免费视频观看的| 国产在线观看高清视频| 色综合久久久久网| 少妇毛片一区二区三区| 亚洲深夜福利| 蜜桃91精品入口| 亚洲欧美韩国| 亚洲性猛交xxxxwww| 尤物视频免费观看| 中文字幕av一区 二区| 国产成人精品无码播放| 精品视频黄色| 国产日韩精品综合网站| 岛国中文字幕在线| 91精品国产欧美日韩| 91人妻一区二区三区蜜臀| 国产一区二区免费视频| 成人一区二区av| 高清日韩中文字幕| 91成品人片a无限观看| 欧美性孕妇孕交| 欧美性欧美巨大黑白大战| 懂色av粉嫩av浪潮av| 精品在线观看免费| 亚洲一区二区三区国产| 国产精品xxxav免费视频| 精品一区二区三区久久| 另类小说综合网| 不卡av影片| 中文字幕av一区二区三区谷原希美| 成年人晚上看的视频| 国产精品第五页| 精品无人乱码一区二区三区的优势 | 精品乱人伦小说| 成年人午夜视频| 久久品道一品道久久精品| 日韩免费高清在线| 日韩专区精品| 成人自拍爱视频| 免费一二一二在线视频| 一区二区三区天堂av| 国产免费黄色大片| 亚洲大片精品永久免费| 精品亚洲aⅴ无码一区二区三区| 精品中文字幕一区二区| 97视频久久久| 色琪琪久久se色| 99一区二区三区| 亚洲综合在线电影| 欧美老少做受xxxx高潮| 暖暖视频在线免费观看| 91麻豆精品国产91久久久| 国产精品二区一区二区aⅴ| 2021国产精品久久精品| 99视频在线免费| 91精品一区国产高清在线gif| 久久99精品久久久水蜜桃| 日本成人在线网站| 欧美一区二区影院| 高h视频在线观看| 亚洲色在线视频| 黄频网站在线观看| 欧美日韩免费视频| 国产精品乱子伦| 一区二区在线电影| 日本一二三不卡视频| 波多野洁衣一区| 日本精品一区在线| 久热综合在线亚洲精品| 性一交一乱一伧国产女士spa| av一区二区在线观看| 精品国产乱码久久久久久郑州公司| 九九热这里有精品| 26uuu亚洲国产精品| 污的网站在线观看| www国产亚洲精品久久网站| 亚洲 国产 欧美 日韩| 日韩亚洲欧美高清| 一区二区自拍偷拍| 色94色欧美sute亚洲线路一久| 久草视频手机在线观看| 国产精品国产三级国产aⅴ无密码| 最新中文字幕视频| 成人av在线网站| 久久久久无码精品| 久久99精品久久久| 欧美大尺度做爰床戏| 久久久夜夜夜| 欧美日韩在线中文| 在线播放精品| 亚洲精品蜜桃久久久久久| 欧美在线三区| 国产对白在线播放| 亚洲经典一区| 咪咪色在线视频| 久久久久久久久99精品大| 亚洲国产精品一区二区第一页| 欧美激情在线免费| 免费在线成人av电影| 米奇精品关键词| 国产一区二区视频在线免费观看| 午夜精品在线| 国产伦精品一区二区三区免| 99精品国产一区二区三区2021| 51精品国产人成在线观看| 麻豆视频久久| 超碰97在线资源| 精品一区二区男人吃奶| 国产精品一区二区免费| 国产精品调教视频| 精品一区2区三区| 中文有码一区| 日韩精品无码一区二区三区| 国产精品三级| 亚洲一区二区三区色| 久久在线视频免费观看| 五月天综合婷婷| 亚洲午夜黄色| 国产成人无码精品久久久性色| 国产精品日韩| 天天碰免费视频| 国模大尺度一区二区三区| 亚洲高清av一区二区三区| 国产sm精品调教视频网站| 国产午夜在线一区二区三区| 97se亚洲国产综合自在线不卡| 在哪里可以看毛片| 国产精品毛片久久久久久久| 国产男女猛烈无遮挡在线喷水| 亚洲欧美二区三区| 国产午夜福利一区二区| 日韩欧美国产激情| 在线观看国产精品视频| 日韩一区二区精品| 亚洲av成人精品毛片| 在线成人激情黄色| 污片视频在线免费观看| 欧美一区二区三区……| 99综合99| 精品一区二区三区日本| 成人午夜国产| bt天堂新版中文在线地址| 午夜一区在线| 国产不卡的av| 久久精品在线免费观看| 日本中文在线视频| 欧美日韩国产色视频| 亚洲天堂网在线观看视频| 精品区一区二区| 韩国免费在线视频| 欧美日韩高清区| 国产成人免费9x9x人网站视频| 91亚洲午夜在线| 在线日韩一区| 国产av熟女一区二区三区| 久久国产福利| 任你躁av一区二区三区| 日本一区二区三区四区| 国产精品18p| 欧美日本一区二区| 色综合久久网女同蕾丝边| 操91在线视频| 在线看欧美视频| 国产一级二级三级精品| 亚洲a在线视频| 欧美精品一区二区三区免费播放| 国产一区在线看| 国产伦理片在线观看| 亚洲一区二区五区| 国产毛片一区二区三区va在线| 精品在线观看国产| 日本高清在线观看视频| 成人福利在线观看| 国产伦精品一区二区三区视频| 欧美一级视频在线播放| 精品一区二区综合| 九九热免费在线| 色综合久久综合网| 午夜视频免费在线| 欧美激情乱人伦| 国产精品一区二区精品视频观看| 奇米视频888战线精品播放| 在线视频观看日韩| 香蕉视频1024| 亚洲精品中文在线影院| 亚洲午夜在线播放| 国产亚洲精品久久| 免费h视频在线观看| 国产精品视频免费观看| 欧美激情第10页| 精品国产鲁一鲁一区二区三区| 欧美激情综合在线| а中文在线天堂| 亚洲人成电影网站色www| 久草在线中文最新视频| 国产精品麻豆免费版| 国产精品二区影院| 日韩大尺度视频| 亚洲一区二区三区四区的| 午夜久久久久久久久久| 九九久久精品一区| 中文字幕视频精品一区二区三区| 大桥未久一区二区| 国产一区二三区| www.99re7| 精品少妇一区二区三区视频免付费 | 日韩在线观看免费网站| 成人亚洲网站| 这里只有精品66| 韩国av一区二区三区| 男的操女的网站| 日韩免费一区二区| 黑人极品ⅴideos精品欧美棵| 国产精品久久久久久久免费大片| 亚洲午夜在线| theav精尽人亡av| 日本高清免费不卡视频| 成人欧美一区| 亚洲va久久久噜噜噜| 黄色一区二区三区四区| 中文字幕人妻一区| 精品人伦一区二区三区蜜桃免费 | 久久亚洲精品小早川怜子| 特级做a爱片免费69| 尤物yw午夜国产精品视频明星| 欧美日韩va| 国产精品视频二| 91亚洲永久精品| 糖心vlog精品一区二区| 久久av中文字幕| 国产精品对白久久久久粗| 日本精品一区二区三区四区| 中文字幕乱码日本亚洲一区二区| 一级淫片免费看| 久久久女女女女999久久| 视频一区欧美| 亚欧精品在线视频| 精品久久香蕉国产线看观看gif| 国产在线超碰| 91在线播放视频| 男人的天堂亚洲| 国产日韩欧美在线观看视频| 日韩成人免费视频| 欧美大陆国产| 人妻夜夜添夜夜无码av| 国产欧美一区二区三区网站| h狠狠躁死你h高h| 热re91久久精品国99热蜜臀| 91嫩草亚洲精品| 国模私拍在线观看| 制服丝袜av成人在线看| 免费成人在线电影| 一级黄色录像免费看| 91视频在线看| 国产农村妇女毛片精品久久| 57pao精品| 欧美三级网页| 91无套直看片红桃在线观看| 亚洲国产三级网| 9999精品免费视频| 亚洲熟妇av一区二区三区| 亚洲一区二区三区在线|