babel 需要 es6-shim 吗?
Does babel need es6-shim?
我在 Twitter 上提到我要从 es6-shim
转到 babel
。其他人提到:
the shims are still needed even with babel. they fix broken builtins, ones babel's output uses.
所以:
babel 是否需要 es6-shim 或类似的?
如果是,为什么 babel require
这些东西不作为依赖?
有参考文献的答案优先于 'yes / no',没有支持论据!
Babel 的核心只做一件事:将语法从一种形式转换为另一种形式。
Babel 的一些语法转换引入了对 ES6 库功能的依赖。它不关心该功能是如何实现的,因为:
- 系统可能已经提供了
- 用户可能只想加载库的特定部分
- 有很多 polyfill,用户可能有一个特定的想要使用的。
开发人员的工作是确保转译后的代码 运行 在其所需的所有功能实际存在的环境中。
- 如果您想继续使用 Babel,
es6-shim
应该可以正常工作。
Babel 还公开了 babel/polyfill
作为加载 polyfill 的极其简单的方法,它加载 core-js
,另一个类似 es6-shim
的 polyfill。只是:
require('babel/polyfill');
一些 Babel 转换依赖于您的运行时环境中可能不可用的对象或方法,因此您希望为这些环境填充这些对象或方法。这些依赖项记录在 https://babeljs.io/docs/usage/caveats/.
Babel 附带一个 polyfill,它满足您可以根据需要选择加入的所有这些要求,并且不会因为@loganfsmyth 解释的原因而尝试自动插入 polyfill。
我在 Twitter 上提到我要从 es6-shim
转到 babel
。其他人提到:
the shims are still needed even with babel. they fix broken builtins, ones babel's output uses.
所以:
babel 是否需要 es6-shim 或类似的?
如果是,为什么 babel
require
这些东西不作为依赖?
有参考文献的答案优先于 'yes / no',没有支持论据!
Babel 的核心只做一件事:将语法从一种形式转换为另一种形式。
Babel 的一些语法转换引入了对 ES6 库功能的依赖。它不关心该功能是如何实现的,因为:
- 系统可能已经提供了
- 用户可能只想加载库的特定部分
- 有很多 polyfill,用户可能有一个特定的想要使用的。
开发人员的工作是确保转译后的代码 运行 在其所需的所有功能实际存在的环境中。
- 如果您想继续使用 Babel,
es6-shim
应该可以正常工作。 Babel 还公开了
babel/polyfill
作为加载 polyfill 的极其简单的方法,它加载core-js
,另一个类似es6-shim
的 polyfill。只是:require('babel/polyfill');
一些 Babel 转换依赖于您的运行时环境中可能不可用的对象或方法,因此您希望为这些环境填充这些对象或方法。这些依赖项记录在 https://babeljs.io/docs/usage/caveats/.
Babel 附带一个 polyfill,它满足您可以根据需要选择加入的所有这些要求,并且不会因为@loganfsmyth 解释的原因而尝试自动插入 polyfill。