巴贝尔需要es6-shim吗?

时间:2015-10-12 11:37:19

标签: babeljs polyfills es6-shim

我在Twitter上提到我正在从es6-shim转移到babel。其他人提到:

  即使有了巴贝尔,仍然需要垫片。他们修复了破碎的内置物,巴贝尔的输出用途。

所以:

  1. babel需要es6-shim还是类似?

  2. 如果确实如此,为什么不将这些东西作为依赖关系?require

  3. 带有参考资料的答案优先于'是/否'没有支持的论据!

2 个答案:

答案 0 :(得分:12)

Babel的核心是做一件事:将语法从一种形式转换为另一种形式。

Babel的一些语法转换引入了对ES6库功能的依赖。它并不关心这个功能是如何实现的,因为:

  • 系统可能已提供
  • 用户可能只想加载库的特定部分
  • 有许多填充物,用户可能有一个想要使用的特定填充物。

确保转换后的代码在其所需的所有功能实际存在的环境中运行是开发人员的工作。

  • 如果您想继续使用Babel,Babel应与es6-shim一起使用。
  • Babel还公开babel/polyfill作为加载填充的简单方法,加载core-js,另一个填充,如es6-shim。只是:

    require('babel/polyfill');

答案 1 :(得分:4)

某些Babel转换依赖于您的运行时环境中可能无法使用的对象或方法,因此您希望为这些环境进行polyfill。这些依赖关系记录在https://babeljs.io/docs/usage/caveats/

Babel附带的polyfill满足您可以选择加入的所有要求,并且不会出于@loganfsmyth解释的原因而自动插入polyfill。