AST
AST即抽象语法树,是源代码抽象语法的树形表现形式
无论是代码编译(babel),打包(webpack),代码压缩,css预处理,代码校验(eslint),代码美化(pretiier),Vue中对template的编译,这些的实现都离不开AST。
babel 的原理
babel编译代码的过程有三步:
- parse: 把代码code(字符串形式)变成AST
- traverse: 遍历 AST 进行修改
- generate: 把 AST 生成 code2
总结:code -> AST -> AST2 -> code2
babel 可以把ES6等更高版本的代码编译成 ES5,编译过程用到了@babel/parser,@babel/traverse,@babel/generate,还有@babel/preset-env的内置规则
依赖
如果文件有别的依赖,将会递归的进行分析,
如果文件中存在循环依赖,可能本身有错误无法执行,但是可以做静态的依赖分析
