babel-polyfill

2022-03-22  本文已影响0人  时间的溺水者

Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。

举例来说,ES6在Array对象上新增了Array.from方法。Babel就不会转码这个方法。如果想让这个方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。

babel-polyfill的几种使用方式

1. 使用转换插件: babel-plugin-transform-xxx
2. 使用插件 babel-runtime 与 babel-plugin-tranform-runtime

相比方法1, 相当于抽离了公共模块, 避免了重复引入, 从一个叫core.js的库中引入所需polyfill(一个国外大神用ES3写的ES5+ polyfill)

3. 全局babel-polyfill(不使用useBuiltIns)
4. 全局babel-polyfill(使用babel-preset-env插件和useBuiltIns属性)

.babelrc示例

{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["ie >=9"]
      },
      "useBuiltIns": true,
      "debug": true
    }]
  ]
}
上一篇 下一篇

猜你喜欢

热点阅读