什么是polyfill
它会根据浏览器做一个兼容布丁
core-js和regenerator
它是一个标准的库,集成了所有es6新特性的语法。
core.js满足不了的就是generator函数。
所以regenerator来支持
babel-polyfill即两者结合
babel-polyfill现已废弃
babel7.4之后弃用babel-polyfill
推荐直接使用core-js和regenerator
如果使用,按需使用
{"presets": [["@babel/preset-env", // 语法转译es6+// 按需引入 usage 会根据配置的浏览器兼容,以及你代码中用到的 API 来进行 polyfill,实现了按需添加{"useBuiltIns":"usage","corejs":3}]],"plugins": []}
babel-polyfill出现的问题
会污染全局环境
如果做一个独立的web系统,则无碍
如果做一个第三方的lib会有问题
babel-runtime
如何使用?
{"presets": [["@babel/preset-env", // 语法转译es6+// 按需引入 usage 会根据配置的浏览器兼容,以及你代码中用到的 API 来进行 polyfill,实现了按需添加{"useBuiltIns":"usage","corejs":3}]],"plugins": [{"@babel/plugin-transform-runtime",{"absoluteRunteime":false,"corejs":3,"helpers":true,"regenerator":true,"useZESModules":false}}]}
babel-runtime和babel-polyfill最主要的区别是解决全局污染环境
产出第三方lib 要用babel-runtime
