爲何要用babel-polyfill

1.爲何要用babel-polyfillwebpack

Babel默認只轉換新的JavaScript句法(syntax),而不轉換新的API,好比 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局對象,以及一些定義在全局對象上的方法(好比Object.assign)都不會轉碼。舉個栗子,ES6在Array對象上新增了Array.from方法。Babel就不會轉碼這個方法。若是想讓這個方法運行,必須使用babel-polyfill,爲當前環境提供一個墊片。git

 

2.安裝github

npm install babel-polyfill -S

由於是一個 polyfill (它須要在你的源代碼以前運行),咱們須要讓它成爲一個 dependency,而不是一個 devDependencyweb

 

3.在 Node / Browserify / Webpack 中使用npm

你須要在你的應用入口頂部經過 require 將 polyfill 引入進來。確保它在任何其餘代碼/依賴聲明以前被調用!數組

require("babel-polyfill");

若是你在你的應用入口使用 ES6 的 import 語法,你須要在入口頂部經過 import 將 polyfill 引入,以確保它可以最早加載:瀏覽器

import 'babel-polyfill';

在 webpack.config.js 中,將 babel-polyfill 加到你的 entry 數組中:babel

module.exports = {
  entry: ["babel-polyfill", "./app/js"]
};

 

4.在瀏覽器中使用app

能夠在 babel-polyfill npm 發佈版中的 dist/polyfill.js 文件中找到它。 它須要在你編譯過的 Babel 代碼以前被包括進去。你能夠將它追加到你編譯過的代碼中,或者在這些代碼以前經過 <script> 引入它。ui

注意: 不要經過相似 browserify 等手段來 require 它,用 babel-polyfill

 

5.備註

Babel默認不轉碼的API很是多,詳細清單能夠查看 babel-plugin-transform-runtime模塊的 definitions.js

參考:https://www.babeljs.cn/docs/usage/polyfill/

相關文章
相關標籤/搜索