Babel是一個工具鏈,主要用於在當前和較舊的瀏覽器或環境中將ECMAScript 2015+代碼轉換為JavaScript的向後兼容版本(最常做的是將es2015/2016/2017/2046 等javascript版本語法,轉成ES5)。以下是Babel可以為您做的主要事情:
```
// 轉碼前
input.map(item => item + 1);
// 轉碼後
input.map(function (item) {
return item + 1;
});
```
總共存在三種方式:
其中後面兩種比較常見。第二種多見於package.json中的scripts段落中的某條命令;第三種就直接集成到構建工具中。
這三種方式只有入口不同而已,調用的babel 內核,處理方式都是一樣的,所以我們先不糾結入口的問題。
Babel的配置文件是.babelrc,存放在項目跟目錄。使用Babel的第一步,就是配置这个文件。
该文件用来设置转码规则和插件,基本格式如下。
{
"presets": [],
"plugins": []
}
preset可以作為Babel插件的組合,甚至可以作為可以共享的options配置
preset 分為以下幾種:
而最需要配置的當屬env,如下:
"presets": [
// 带了配置项,自己变成数组
[
// 第一个元素依然是名字
"env",
// 第二个元素是對象,列出配置项
{
"module": false
}
],
// 不帶配置項直接列出
"stage-2"
]
它可以根据开发者的配置,按需加载插件。配置项大致包括:1. 需要支持的平台:比如node、浏览器等。2.需要支持的平台的版本:比如支持node@6.1等。 3. 它跟 babel-preset-latest 是等同的,会加载从es2015开始的所有preset
因為env 最為常用也最重要,所以我們有必要重點關注。
env 的核心目的是通過配置得知目標環境的特點,然後只做必要的轉換。例如目標瀏覽器支持es2015,那麼es2015 這個preset 其實是不需要的,於是代碼就可以小一點(一般轉化後的代碼總是更長),構建時間也可以縮短一些。
如果不寫任何配置項,env等價於latest,也等價於es2015 + es2016 + es2017三個相加(不包含stage-x中的插件)。
另外一個好用的配置項是modules。這可以讓babel以特定的模塊化格式來輸出代碼(ex:umd es6 commonJs)。如果選擇false就不進行模塊化處理。而這一塊之後我們會用rollup處理
今天babel介紹就先到這裡,明天將會實際操做並補充babel相關套件