【问题标题】:String.prototype.includes not converted to ES5String.prototype.includes 未转换为 ES5
【发布时间】:2015-07-15 10:00:57
【问题描述】:

ES6 的 String.prototype.includes 函数在编译到 ES5 时保持原样(CLI babel 5.0.9)

对不起,如果这是一个常见问题解答,我确实彻底搜索了。

【问题讨论】:

    标签: babeljs


    【解决方案1】:

    Babel 将 ES6 语法转换为 ES5 语法。加载一个 polyfill 由您决定,以便使用新的 ES6 库函数。通常你会这样做

    import 'babel/polyfill';
    

    【讨论】:

    • 谢谢,这行得通。如果您不必将该行添加到您的代码中会更好,只需能够执行正常的babel es6.js > es5.js 并且默认情况下 ES6 规范中的所有内容都会转换为 ES5。
    • Babel 是一个语法转换器,它不会自动添加 polyfill,因为你加载的 polyfill 完全取决于用户。如果您只使用现代浏览器,/polyfill 可能是矫枉过正,因为它是最广泛的 polyfill。
    • 这很实际。但是也有一个工具可以将 ES6(全部,根据 ECMA-262 6)转换为 ES5,您可以独立于浏览器使用它(假设它当然涵盖了所有 ES5),并且不要求您指定使用规范的哪些部分,而只是转换您使用的任何新的 ES6 语法或函数。
    • Babel 转换语法,polyfill 实现了 ES5 中的所有新库,所以你希望 polyfill 自动添加?通过自动添加 polyfill 与将其添加为使用 Babel 时已经需要的构建过程的一部分,您可以获得什么?你在哪里添加它? Babel 只是编译单个文件,是否每个文件在执行之前都需要验证 polyfill 是否已加载?
    • 这个答案不再相关。 15.12.19 为真。 String includesArray includes 和许多其他方法不属于 Babel preset-env。这意味着它们不会被转译并导致例如 IE10/11 中的错误。此外,@babel/polyfill 已被弃用,它的文档完全被破坏了......如果有人知道一种清晰而优雅的方式来导入 Babel 出于某种原因没有类似字符串 includes 的 polyfill,我很想了解您采用的方法.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 2020-07-07
    • 2019-09-24
    • 2020-05-29
    • 2016-03-28
    • 1970-01-01
    相关资源
    最近更新 更多