Babel編譯

Babel是一個(gè)js編譯器,是一個(gè)源代碼到源代碼的轉(zhuǎn)換郊艘。Babel可以讓我們?cè)趈s新規(guī)范和特性全面普及之前就可以使用它們荷科。Babel的編譯分為語法和API兩部分:

· 語法,諸如const let ...解構(gòu)纱注、class語法等畏浆;
· API,諸如[].includes狞贱、[].reduce等

默認(rèn)的Babel如下刻获,只會(huì)編譯語法,不會(huì)編譯API:

{
  "presets": [["@babel/preset-env"]]
}

Babel提供了polyfill庫進(jìn)行api的轉(zhuǎn)換瞎嬉,同時(shí) @babel/preset-env 提供了配置參數(shù) useBuiltIns 進(jìn)行設(shè)置如何處理蝎毡。

{
  "presets": [[
      "@babel/preset-env",
       {
          // ① 默認(rèn)值 false 不進(jìn)行api的轉(zhuǎn)換
          // ② entry:需要在源代碼頂部手動(dòng)引入 @babel/polyfill ,但這樣所有的polyfill庫都會(huì)引入佑颇,增大打包體積
          // ③ usage:按需引入顶掉,源代碼不必手動(dòng)引入polyfill草娜,減少打包體積挑胸,常見用法
          "useBuiltIns": false | entry | usage 
       }
    ]]
}

但是polyfill的引入還有種常見做法是,源代碼處引入特定需要的polyfill庫(如@babel/polyfill-xx宰闰,沒用過)

上面的配置存在的問題:

  1. polyfill的轉(zhuǎn)換是通過直接global.Array.includes 或者 Array.prototype.includes 來實(shí)現(xiàn)的茬贵,這種做法直接修改全局變量及其原型簿透,造成原型污染或者不可預(yù)測(cè)的問題;
  2. babel對(duì)語法的轉(zhuǎn)換解藻,有時(shí)是通過一些稱為helpers的輔助函數(shù)實(shí)現(xiàn)的老充,babel會(huì)在需要轉(zhuǎn)換的地方把這些helpers函數(shù)都引入進(jìn)來,造成代碼重復(fù)螟左,打包體積變大啡浊。

@babel/plugin-transform-runtime 這個(gè)插件解決了上面的問題,它需要配合@babel/runtime-corejs3使用胶背。前者是轉(zhuǎn)換代碼巷嚣,轉(zhuǎn)換的代碼會(huì)將后者的模塊進(jìn)行引入,所以前者運(yùn)行在編譯時(shí)钳吟,后者運(yùn)行在運(yùn)行時(shí)廷粒。這樣helpers輔助函數(shù)和polyfill方法都從統(tǒng)一的 @babel/runtime-corejs3 引入,解決了上面的問題红且。

{
   "presets": [[
      "@babel/preset-env",
       {
          "useBuiltIns": "usage"
       }
    ]],
   "plugin": [[
      "@babel/plugin-transform-runtime",
       {
          "corejs": 3
       }
    ]]
}

babel good

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坝茎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子暇番,更是在濱河造成了極大的恐慌嗤放,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壁酬,死亡現(xiàn)場(chǎng)離奇詭異斤吐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)厨喂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門和措,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜕煌,你說我怎么就攤上這事派阱。” “怎么了斜纪?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵贫母,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我盒刚,道長(zhǎng)腺劣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任因块,我火速辦了婚禮橘原,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己趾断,他們只是感情好拒名,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芋酌,像睡著了一般增显。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脐帝,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天同云,我揣著相機(jī)與錄音,去河邊找鬼堵腹。 笑死梢杭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秸滴。 我是一名探鬼主播武契,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼荡含!你這毒婦竟也來了咒唆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤释液,失蹤者是張志新(化名)和其女友劉穎全释,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體误债,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浸船,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寝蹈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片李命。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖箫老,靈堂內(nèi)的尸體忽然破棺而出封字,到底是詐尸還是另有隱情,我是刑警寧澤耍鬓,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布阔籽,位于F島的核電站,受9級(jí)特大地震影響牲蜀,放射性物質(zhì)發(fā)生泄漏笆制。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一涣达、第九天 我趴在偏房一處隱蔽的房頂上張望在辆。 院中可真熱鬧证薇,春花似錦、人聲如沸开缎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奕删。三九已至,卻和暖如春疗认,著一層夾襖步出監(jiān)牢的瞬間完残,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工横漏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谨设,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓缎浇,卻偏偏與公主長(zhǎng)得像扎拣,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子素跺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容