一、babel配置文件中的plugins和presets是什么?
1、首先说说babel是什么,babel是一个JavaScript转码器,帮助我们把浏览器不兼容的ES6语法转换成ES5语法;
2、接着,babel是通过plugin来实现代码的转码的;
3、而preset代表的是一组预先定义好的plugin集合;
4、当然,在babel转码中,也有调用顺序,第一步,先正序执行完plugins里面的插件,第二步,再倒序执行presets中的preset;
这里还有一篇更详细的博文《Babel:Plugin、Preset的区别和使用》,我也是从这里了解之后才加深了理解。
二、什么是polyfill代码,babel-polyfill有什么用?
比如浏览器的JSON对象,在低版本的IE浏览器,如IE 6 7 8是没有JSON对象的,为了代码的统一性我们会引入一些库或者自己写兼容代码来模拟JSON的行为,而这些代码可以称之为polyfill代码。
而babel-polyfill是来处理浏览器本身就没有的对象、方法,来模拟实现这些对象、方法,如:
1、全局对象:Promise、WeakMap等;
2、全局静态方法:Array.from、Object.assign等;
3、实例方法:Array.prototype.includes等;