我一直在学习如何在Javascript中使用babel,我理解了带有预设“env”的babel将更高版本的ES移植到ES5中的想法。然而,我遇到了一个场景,其中数组“include”方法根本没有被babel更改,并且在IE11上不起作用,为了解决这个问题,我读到有一个可以使用的babel polyfill。
我曾经遇到过一个试图解释这个问题的答案,但是我完全没有理解它。有人能简单地解释一下为什么babel默认情况下不能处理所有的ES transpilations,而需要一个polyfill吗?
如果我理解正确的话,polyfill是一种旨在填补空白的东西,使一些不受支持的东西工作,但我认为这是Babel默认的工作。
1条答案
按热度按时间wswtfjt71#
polyfill使用旧版本的语言来实现新的特性。例如,Babel通过在ES5中实现方法来支持ES6
array.includes
。另一方面,babel的核心库是一个transpiler,它负责将新版本javascript的特性转换为旧版本javascript的特性,而这些特性在旧版本javascript中无法通过编写polyfill来实现。例如,要编写polyfill将ES5的
let
或const
转换为var
是不可能的。或者将箭头函数转换为传统函数。像这样的操作需要一个transpiler来遍历代码并转换它。