? ? ? ? babel是一種js語法編譯器嘹朗,在前端開發(fā)過程中,由于瀏覽器的版本和兼容性問題双饥,很多js的新方法和特性的使用都受到了限制叫潦。使用babel可以將代碼中js代碼編譯成兼容絕大多數(shù)主流瀏覽器的代碼。
? ? ? ? babel6.X版本之后爸邢,所有的插件都是可插拔的樊卓,也就是說只安裝babel依然無法正常的工作,我們需要配置對應(yīng)的.babelrc文件才能起作用杠河。
? ? ? ? .babelrc文件需要的配置項主要有預(yù)設(shè)(presets)和插件(plugins)碌尔。
? ? ? ? 1浇辜、預(yù)設(shè)(presets)的作用是為babel安裝指定的插件,插件命名采用babel-preset-xxx的形式唾戚,安裝時使用npm安裝柳洋,如npm install babel-preset-es2015。之后在.babelrc文件里進行配置叹坦,如圖所示:
? ? ? ? 其中xxx是npm安裝時的插件名熊镣,options是插件相應(yīng)的參數(shù),主要參數(shù)有
? ? ? ? a)targets:{[string]:number}募书,默認(rèn){}? 指定需要支持的環(huán)境绪囱,如chrome、safari莹捡、ie等鬼吵,甚至可以指定版本,如node:6.5篮赢,或者node:current表示使用當(dāng)前的版本齿椅。
? ? ? ? b)browers:Array|string 默認(rèn)[],瀏覽器列表启泣,(不太理解涣脚,后續(xù)再研究)。
? ? ? ? c)loose:boolean寥茫,默認(rèn)false? 是否使用寬松模式涩澡,如果設(shè)置為true,只要plugins中的插件允許坠敷,都會采用寬松模式妙同。
? ? ? ? d)debug:boolean 默認(rèn)false 編譯時是否去掉console.log。
? ? ? ? e)whitelist 默認(rèn)[]膝迎,設(shè)置一直引入的plugins列表粥帚。
? ? ? ? 2、插件(plugins)
? ? ? ? presets是插件plugins的預(yù)設(shè)限次,也就是說直接需要不需要的插件一起引入芒涡,如果不想使用presets,可以單獨使用plugins對某個功能進行單獨的引入卖漫。另外费尽,有一些方法是presets中不提供的,如果要使用就需要單獨引用了羊始,比如:
? ? ? ? a)transform-runtime:解決編譯中產(chǎn)生的重復(fù)的工具函數(shù)旱幼,減小代碼體積。
? ? ? ? b)transform-remove-console:編譯后的代碼會移除console.*
? ? ? ? plugins/presets排序遵循下列標(biāo)準(zhǔn):?
? ? ? ? 1突委、plugins會先于presets進行編譯
? ? ? ? 2柏卤、plugins會按照數(shù)組index的增序進行編譯
? ? ? ? 3冬三、presets會按照數(shù)組index的降序進行編譯
注:
check-es2015-constants // 檢驗const常量是否被重新賦值
transform-es2015-arrow-functions // 編譯箭頭函數(shù)
transform-es2015-block-scoped-functions // 函數(shù)聲明在作用域內(nèi)
transform-es2015-block-scoping // 編譯const和let
transform-es2015-classes // 編譯class
transform-es2015-computed-properties // 編譯計算對象屬性
transform-es2015-destructuring // 編譯解構(gòu)賦值
transform-es2015-duplicate-keys // 編譯對象中重復(fù)的key,其實是轉(zhuǎn)換成計算對象屬性
transform-es2015-for-of // 編譯for...of
transform-es2015-function-name // 將function.name語義應(yīng)用于所有的function
transform-es2015-literals // 編譯整數(shù)(8進制/16進制)和unicode
transform-es2015-modules-commonjs // 將modules編譯成commonjs
transform-es2015-object-super // 編譯super
transform-es2015-parameters // 編譯參數(shù)缘缚,包括默認(rèn)參數(shù)勾笆,不定參數(shù)和解構(gòu)參數(shù)
transform-es2015-shorthand-properties // 編譯屬性縮寫
transform-es2015-spread // 編譯展開運算符
transform-es2015-sticky-regex // 正則添加sticky屬性
transform-es2015-template-literals // 編譯模版字符串
transform-es2015-typeof-symbol // 編譯Symbol類型
transform-es2015-unicode-regex // 正則添加unicode模式
transform-regenerator // 編譯generator函數(shù)
transform-exponentiation-operator // 編譯冪運算符
syntax-trailing-function-commas // function最后一個參數(shù)允許使用逗號
transform-async-to-generator // 把async函數(shù)轉(zhuǎn)化成generator函數(shù)