请详细说明一下 Babel 编译的原理是什么?

75 阅读1分钟

大多数 JavaScript Parser 遵循 estree 规范,Babel 最初基于 acorn 项目(轻量级现代 JavaScript 解析器) Babel 大概分为三大部分:

1、解析:将代码转换成 AST(抽象的语法树)

2、词法分析:将代码(字符串)分割为 token 流,即语法单元成的数组

3、语法分析:分析 token 流(上面生成的数组)并生成 AST,转换:访问 AST 的节点进行变换操作生产新的 AST,以新的 AST 为基础生成代码(taro 就是利用 babel 完成的小程序语法转换,生成)

babel我们可以把他理解为一个编译器,也就是实现代码转换的功能,其转换过程分为三个阶段。
1、解析:  将js代码转换成AST(抽象语法树)
2、转化:  根据抽象语法树进行变换操作
3、生成:  将转换后的抽象语法树生成新的代码