1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

Merge pull request #958 from Mookiepiece/master

使用core-js替代过时的@babel/polyfill
This commit is contained in:
Ruan YiFeng 2020-03-10 15:07:16 +08:00 committed by GitHub
commit 130cdee9ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -266,26 +266,30 @@ console.log(es5Code);
上面代码中,`transform`方法的第一个参数是一个字符串,表示需要被转换的 ES6 代码,第二个参数是转换的配置对象。
### @babel/polyfill
### polyfill
Babel 默认只转换新的 JavaScript 句法syntax而不转换新的 API比如`Iterator``Generator``Set``Map``Proxy``Reflect``Symbol``Promise`等全局对象,以及一些定义在全局对象上的方法(比如`Object.assign`)都不会转码。
举例来说ES6 在`Array`对象上新增了`Array.from`方法。Babel 就不会转码这个方法。如果想让这个方法运行,必须使用`babel-polyfill`,为当前环境提供一个垫片。
举例来说ES6 在`Array`对象上新增了`Array.from`方法。Babel 就不会转码这个方法。如果想让这个方法运行,可以使用`core-js``regenerator-runtime`(后者提供generator函数的转码),为当前环境提供一个垫片。
安装命令如下。
```bash
$ npm install --save-dev @babel/polyfill
$ npm install --save-dev core-js regenerator-runtime
```
然后,在脚本头部,加入如下行代码。
然后,在脚本头部,加入如下行代码。
```javascript
import '@babel/polyfill';
import 'core-js';
import 'regenerator-runtime/runtime';
// 或者
require('@babel/polyfill');
require('core-js');
require('regenerator-runtime/runtime);
```
`@babel/polyfill` 在7.4.0后被废弃,如果选择`core-js``regenerator-runtime`则不必再引入`@babel/polyfill`,二者会冲突。
Babel 默认不转码的 API 非常多,详细清单可以查看`babel-plugin-transform-runtime`模块的[definitions.js](https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-runtime/src/runtime-corejs3-definitions.js)文件。
### 浏览器环境