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

问题描述 投票:2回答:1

babel-polyfillbabel-es2015之间的差异是什么? babel-es2015是否包括babel-polyfill

babel
1个回答
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编写代码并将其转换为使用Promise类似于babel-runtime导出的对象。

巴别塔,配置

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

更多细节可以找到here

那么何时使用什么?

  • 如果您不关心污染全局范围,那么babel-polyfill是更好的选择:运行时不适用于myArray.includes(15)等实例方法。
  • 如果您正在编写公共模块:使用babel-runtime
  • 如果您正在编写应用程序,那么babel-polyfill是更好的选择
  • 有些情况下,当您不需要其中任何一个时,如果您正在编写一个大小重要的库,您可能最好避免使用它们。
© www.soinside.com 2019 - 2024. All rights reserved.