babel

502 阅读1分钟

1、js提案

提案共分为五个阶段:

  • stage-0: 稻草人-只是一个大胆的想法
  • stage-1: 提案-初步尝试
  • stage-2: 初稿-完成初步规范
  • stage-3: 候选-完成规范和浏览器初步实现
  • stage-4: 完成-将被添加到下一年发布

2、plugin和preset的关系

Babel插件一般尽可能拆成小的力度,开发者可以按需引进。比如对 ES6 转 ES5 的功能,Babel 官方拆成了20+个插件。

这样的好处显而易见,既提高了性能,也提高了扩展性。比如开发者想要体验ES6 的箭头函数特性,那他只需要引入 transform-es2015-arrow-functions 插件就可以,而不是加载 ES6 全家桶。

但很多时候,逐个插件引入的效率比较低下。比如在项目开发中,开发者想要将所有 ES6 的代码转成ES5,插件逐个引入的方式令人抓狂,不单费力,而且容易出错。这个时候,可以采用 Babel Preset。

可以简单的把 Babel Preset 视为 Babel Plugin 的集合。比如 babel-preset-es2015 就包含了所有跟 ES6 转换有关的插件。

可以同时使用多个 Plugin 和 Preset,此时,它们的执行顺序非常重要。

  • plugin 会运行在 preset 之前。
  • plugin 会从第一个开始顺序执行。
  • preset 的顺序则刚好相反(从最后一个逆序执行)。

3、参考链接

Babel:plugin、preset的区别与使用