? ? ? ?初學ES6,前端發展如此之快,ES6很好,但是很多瀏覽器是不支持的,所以我們有時候會將使用ES6編寫的js文件通通轉碼至ES5(恨不得轉到ES3)。接下來是自己按照官方指引操作的。毫無原創度。權當自己的課后小甜點(強行加深映像)。
1,首先你得有node和npm(cnpm)環境。這塊就不多說了。
2,開始新建一個空項目,并且cd到當前文件夾下。首先初始化項目 npm init 然后一直回車(也可以輸入必要信息),
3,安裝babel至項目本地,cnpm install --save-dev babel-cli?(這里會自動更新你的pakeage.json的"devDependencies")
4,光安裝babel是不夠的,還要安裝一個叫轉碼規則的插件,cnpm install --save-dev babel-perset-latest
5,光裝好了這兩個包是不夠的,在項目的根目錄下還需要一個.babelrc的文件,這是babel的啟動文件。里面的內容只需要?
{ ?
? ? "presets": ["latest"]
?}
6,好了我們在項目根目錄下穿件一個src目錄,src下面再穿件一個js文件夾,js文件夾里穿件一個test.js,寫上我們的測試代碼
```lets=[1,2,3,4];
letresult=s.map(x=>x*2);
console.log(result);```
7,等等,我們再去我們的pakeage.json里的"script"中加上"build":"babel src -d lib"
8,然后我們執行 npm run build
9,然后你就在你的項目中發現多了一個lib文件,這里是將src里的所有js文件全部轉碼到了es5,在lib中找到test.js打開發現轉碼成功
```"use strict";
vars=[1,2,3,4];
varresult=s.map(function(x) {
? ? returnx*2;
});
console.log(result);```
注意:Babel 默認只轉換新的 JavaScript 句法(syntax),而不轉換新的 API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局對象,以及一些定義在全局對象上的方法(比如Object.assign)都不會轉碼。
舉例來說,ES6 在Array對象上新增了Array.from方法。Babel 就不會轉碼這個方法。如果想讓這個方法運行,必須使用babel-polyfill,為當前環境提供一個墊片。
安裝命令如下。
$ npm install--save babel-polyfill
然后,在腳本頭部,加入如下一行代碼。
import'babel-polyfill';// 或者require('babel-polyfill');
Babel 默認不轉碼的 API 非常多,詳細清單可以查看babel-plugin-transform-runtime模塊的definitions.js文件。
/**************************詳情請參考?阮一峰老師的ES6入門 *********************************/