如果babel将ES6翻译为ES5并输出ES5文件,那么如果app输出文件包含ES5代码,为什么浏览器需要包含polyfill文件?
答案 0 :(得分:1)
Babel将ES6(和更新的)代码转换为ES5代码。例如,它将箭头函数(() => {}
)重写为ES5函数(function() {}
)。但是,ES6不仅仅是一些新的语法。
由于Babel只转换语法(如箭头函数),因此您可以使用babel-polyfill来支持新的全局变量(如Promise)或新的本机方法(如String.padStart(左键))。它使用core-js和regenerator。查看我们的babel-polyfill文档以获取更多信息。
所有新功能都需要使用polyfill实现。这些polyfill必须全局包含在您的项目中。否则ES6函数的每次使用都将被ES5代码中该函数的实现所取代。所以如果你使用例如Array#findIndex
十次,转换后的代码也会包含十次实现。这就是为什么必须在全球范围内添加polyfill,而不仅仅是通过蒸煮步骤添加。