Open lhlGitHub opened 2 years ago
1、解析Parse:将代码解析生成抽象语法树(即AST),即词法分析与语法分析的过程 2、转换Transform:对于AST进行变换一系列的操作,babel接收得到AST并通过babel-traverse对其进行遍历,在此过程中进行添加、更新及移除等操作 3、生成Generate:将变换后的AST再转换为JS代码,使用到的模块是babel-genertor
Babel 是一个 JavaScript 编译器,用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前版本和旧版本的浏览器或其他环境中。简单来说 Babel 的工作就是:
1.解析 将代码解析成抽象语法树(AST),每个 js 引擎(比如Chrome浏览器中的V8引擎)都有自己的AST解析器,而Babel是通过[Babylon]实现的。在解析过程中有两个阶段:词法分析和语法分析,词法分析阶段把字符串形式的代码转换为令牌(tokens)流,令牌类似于AST中节点;而语法分析阶段则会把一个令牌流转换成 AST的形式,同时这个阶段会把令牌中的信息转换成AST的表述结构。
词法分析--》生存tokens数组--》AST树---》访问节点---》修改节点---》新AST树