当* not *开发库时,使用babel-runtime和babel-polyfill之间是否有任何实际区别? (例如网络应用程序)

时间:2015-08-03 07:34:09

标签: babeljs

这一切都在标题中,真的。

在Babel文档中,page describing babel-runtime

上有以下行
  

此转换器的另一个目的是为您的代码创建沙盒环境。诸如Promise,Set和Map之类的内置函数别名为core-js,因此您可以无缝使用它们,而无需全局污染polyfill

polyfill只是一个单独的JavaScript文件,其中包含了一些不足之处。

我测试了polyfill与使用babel-runtime和我的构建工具(webpack),当我使用babel-runtime时,我的文件稍微更小。

我不是在开发一个库或插件,只是一个Web应用程序,也不关心被污染的全局范围。了解这一点,除了稍微小一点的最终文件大小之外,使用运行时通过polyfill还有其他任何实际好处或要点吗?

1 个答案:

答案 0 :(得分:31)

如果您不关心污染全局范围,则填充是更好的选择:运行时不适用于[0, 1, 2].includes(1)等实例方法,而填充将会。

两者之间的主要区别在于polyfill污染全局范围,并使用实例方法,而运行时不会污染全局范围,也不适用于实例方法。

polyfill也不允许您在代码中包含两个单独的版本。如果在代码中的某处需要/导入两个单独的polyfill,这只是一个问题。