Babel原理
Babel 是一个javascript 的静态分析编译器,所谓静态分析指的是在不需要执行代码的前提下对代码进行分析和处理的过程(执行时进行代码分析叫动态分析)。要实现 Babel 从一个语法转换成另一个语法,需要经过三个步骤。
解析(Parse)转换(Transform) 生成(Generate)
- 解析:指的是首先将代码经过词法解析和语法解析,最终生成一颗 AST(抽象语法树),在babel中,语法解析器是 Babylon
- 转换:得到AST之后,可以对其进行遍历,在此过程中对节点进行添加,更新及移除等操作。Babel中AST遍历工具是 @babel/traverse
- 生成:经过一系列转换之后得到的一颗新树,要将树转换成代码,就是生成的过程,Babel用到的是 @babel/generator