【发布时间】:2018-03-02 07:13:38
【问题描述】:
babel-polyfill 和 babel-es2015 之间有什么区别? babel-es2015 是否包含babel-polyfill?
【问题讨论】:
标签: babeljs
babel-polyfill 和 babel-es2015 之间有什么区别? babel-es2015 是否包含babel-polyfill?
【问题讨论】:
标签: babeljs
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 编写代码,它会被转换为使用 babel-runtime 导出的类 Promise 对象。
babel-config
{
"plugins": ["transform-runtime"]
}
更多详情可以找here
那么什么时候用什么?
【讨论】: