什么是polyfill
    它会根据浏览器做一个兼容布丁

    core-js和regenerator
    它是一个标准的库,集成了所有es6新特性的语法。
    core.js满足不了的就是generator函数。
    所以regenerator来支持

    babel-polyfill即两者结合

    babel-polyfill现已废弃
    babel7.4之后弃用babel-polyfill
    推荐直接使用core-js和regenerator

    如果使用,按需使用

    1. {
    2. "presets": [
    3. [
    4. "@babel/preset-env", // 语法转译es6+
    5. // 按需引入 usage 会根据配置的浏览器兼容,以及你代码中用到的 API 来进行 polyfill,实现了按需添加
    6. {
    7. "useBuiltIns":"usage",
    8. "corejs":3
    9. }
    10. ]
    11. ],
    12. "plugins": [
    13. ]
    14. }

    babel-polyfill出现的问题
    会污染全局环境
    如果做一个独立的web系统,则无碍
    如果做一个第三方的lib会有问题

    babel-runtime

    如何使用?

    1. {
    2. "presets": [
    3. [
    4. "@babel/preset-env", // 语法转译es6+
    5. // 按需引入 usage 会根据配置的浏览器兼容,以及你代码中用到的 API 来进行 polyfill,实现了按需添加
    6. {
    7. "useBuiltIns":"usage",
    8. "corejs":3
    9. }
    10. ]
    11. ],
    12. "plugins": [
    13. {
    14. "@babel/plugin-transform-runtime",
    15. {
    16. "absoluteRunteime":false,
    17. "corejs":3,
    18. "helpers":true,
    19. "regenerator":true,
    20. "useZESModules":false
    21. }
    22. }
    23. ]
    24. }

    babel-runtime和babel-polyfill最主要的区别是解决全局污染环境
    产出第三方lib 要用babel-runtime