AST 抽象语法树
AST(Abstract Syntax Tree,抽象语法树)是源代码的抽象语法结构的树状表示。它将代码的语法结构分解为可操作的节点,每个节点代表代码中的一种结构(如变量声明、函数调用、条件语句等)。
AST 通过词法分析(Tokenization):将代码分割成最小的语法单元(tokens),如关键字、标识符、运算符等;通过语法分析(Parsing):将 tokens 按照语法规则组装成 AST 结构
AST 常见的作用:
- 代码转换:如将 ES6 代码转换为 ES5 代码,将 JSX 转换为普通的 JavaScript 代码。
- 代码分析:如代码检查、代码格式化、代码压缩等。
- 代码优化:如死代码删除、变量提升、代码合并等。
- 自定义代码处理:如按需加载、自动埋点等。
常见的JS AST 解析工具有
- @babel/parser:Babel 生态的解析器,支持最新的 ES 标准
- acorn:轻量高效的解析器,Vue 源码中使用
- esprima:经典的 JavaScript 解析器
- babel-eslint:一个基于 Babel 的 ESLint 插件,支持将 JavaScript 代码解析为 AST。
- @typescript-eslint/parser:一个 TypeScript 解析器,支持将 TypeScript 代码解析为 AST。
TODO