我正在学习庞大的JavaScript生态系统,但是我无法理解以下内容。
Babel是一个转换器,官方网站上说:
Babel是一个工具链,主要用于将ECMAScript 2015+代码转换为当前和旧版浏览器或环境中向后兼容的JavaScript版本。
由于我使用了 @babel/preset-env
,因此我认为只要根据我的browserslist编写 ES6+ 代码,并将其转换为一些兼容的代码就足够了。
然后,我找到了这个页面:https://babeljs.io/docs/en/babel-polyfill,建议使用 :@babel/polyfill
而不是
import "core-js/stable";
import "regenerator-runtime/runtime";
现在不再使用已弃用的@babel/polyfill
。我知道polyfill是什么了,例如,我使用Intersection Observer polyfill。
我的问题是:Babel是否提供了类似插件自动填充代码的功能?他们所提到的这两个库是什么?为什么我需要这两个附加包使我的代码符合ES5标准,如果Babel本应该自己完成这一任务?考虑Object.assign
:只有使用core-js
包才能在IE11中工作。为什么Babel没有对其进行转译?
编辑:我读错了文章,但我的问题仍然存在。