【发布时间】:2016-01-23 11:32:01
【问题描述】:
我正在开发一个大量使用 ES6 和 ES7 特性的库。使用 Babel 编译它会生成代码,该代码(自然)使用 Symbol 或 Promise 等原语。我应该require('babel-polyfill') 来确保这些原语确实存在吗?
起初,答案似乎是“是” - 特别是如果我不知道有人可能在什么运行时执行我的库。另一方面,如果每个图书馆都这样做,我们最终会一遍又一遍地要求babel-polyfill(我不确定这是否是个好主意)。
【问题讨论】:
-
我想现在任何可行的方法都是一种选择:)
-
"我们最终会一遍又一遍地需要 babel-polyfill" - 我看不出有什么问题。它只会被加载和执行一次。这就是模块的工作原理。
-
@Bergi 这取决于
npm的安装方式。如果npm多次安装它,它也会被执行多次,实际上会抛出错误,看看这个:github.com/babel/babel/blob/master/packages/babel-polyfill/src/… -
顺便说一句,如果您当前构建了一个新库,您应该假设 ES2015 以使用所有无法转译的新功能(TCO、模块、代理)。即将添加主要浏览器支持。
标签: javascript ecmascript-6 babeljs polyfills ecmascript-2016