babel:babel-polyfill和babel-es2015之间有什么区别?

时间:2018-03-02 07:13:38

标签: babel

Systembabel-polyfill之间的差异是什么? babel-es2015是否包含babel-es2015

1 个答案:

答案 0 :(得分:0)

<强>巴别-填充工具

该模块通过在全局(如:Promise和WeakMap)和原型(如Array.prototype.includes)上分配方法来完成模拟ES2015。例如:如果您的环境没有Promise对象,一旦您需要babel-polyfill,您就知道有Promise对象,因为它已被添加到全局范围。

<强> Babel-runtime

此模块执行非常类似的操作,但它不会更改全局命名空间或污染原型。相反,babel-runtime可以作为应用程序的依赖项包含在内,就像任何其他模块一样,您可以从模块中包含ES2015方法。

例如:Promise对象可以通过使用包含:

包括-诺

require('babel-runtime/core-js/promise');

然而,这是太多的工作,所以我们使用babel-plugin-transform-runtime,我们可以添加到我们的babel配置中以自动重写代码,以便您使用Promise API编写代码并将其转换为使用babel-runtime导出的类似Promise的对象。

巴别-配置

{
 "plugins": ["transform-runtime"]
}

更多细节可以找到here

那么何时使用什么?

  • 如果您不关心污染全球范围,那么babel-polyfill就是 更好的选择:运行时不适用于实例方法 例如myArray.includes(15)。
  • 如果您正在编写公共模块:使用babel-runtime
  • 如果您正在撰写应用程序,那么babel-polyfill是更好的选择
  • 如果您不需要其中任何一种,可能会出现这种情况 写一个大小重要的图书馆,你可能会更好地避免 它们。