為什么要用babel-polyfill


1.為什么要用babel-polyfill

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

 

2.安裝

npm install babel-polyfill -S

因為是一個 polyfill (它需要在你的源代碼之前運行),我們需要讓它成為一個 dependency,而不是一個 devDependency

 

3.在 Node / Browserify / Webpack 中使用

你需要在你的應用入口頂部通過 require 將 polyfill 引入進來。確保它在任何其他代碼/依賴聲明之前被調用!

require("babel-polyfill");

如果你在你的應用入口使用 ES6 的 import 語法,你需要在入口頂部通過 import 將 polyfill 引入,以確保它能夠最先加載:

import 'babel-polyfill';

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

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

 

4.在瀏覽器中使用

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

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

 

5.備注

Babel默認不轉碼的API非常多,詳細清單可以查看 babel-plugin-transform-runtime模塊的 definitions.js

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM