为何要用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/

相关文章
相关标签/搜索