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

Nat*_*man 23 babeljs

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

在Babel文档中,页面上有以下描述babel-runtime的行

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

填充工具就是这样,这是包括了单独的JavaScript文件,其中衬层一些丢失的东西.

我使用我的构建工具(webpack)测试了polyfill与使用babel-runtime的比较,当我使用babel-runtime时,我的文件略小一些.

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

Mar*_*kov 31

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

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

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