es6-shim
我在 Twitter 上提到我要从babel
. 还有人提到:
即使使用 babel,仍然需要垫片。他们修复了损坏的内置程序,那些 babel 的输出使用。
所以:
babel 是否需要 es6-shim 或类似的?
如果是这样,为什么不将
require
这些东西作为依赖项呢?
带有参考文献的答案优于没有支持论据的“是/否”!
Babel 的核心是做一件事:将语法从一种形式转换为另一种形式。
Babel 的一些语法转换引入了对 ES6 库功能的依赖。它不关心该功能是如何到达那里的,因为:
开发人员的工作是确保转换后的代码在其所需的所有功能实际存在的环境中运行。
es6-shim
如果您想继续使用Babel,它应该可以正常工作。Babel 还公开babel/polyfill
了一种非常简单的加载 polyfill 的方法,它会加载core-js
另一个 polyfill,例如es6-shim
. 只是:
require('babel/polyfill');
一些 Babel 转换依赖于在您的运行时环境中可能不可用的对象或方法,因此您希望为这些环境进行 polyfill。这些依赖项记录在https://babeljs.io/docs/usage/caveats/。
Babel 附带了一个满足所有这些要求的 polyfill,您可以根据需要选择加入,并且由于@loganfsmyth 解释的原因,它不会尝试自动插入 polyfill。