babel-polyfill
和babel-es2015
之间的差异是什么? babel-es2015
是否包括babel-polyfill
?
巴别塔,填充工具
该模块通过在全局(如: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
那么何时使用什么?