Babel
- 一个Javascript 编译器
- 一个工具链,运行在当前和旧的浏览器或环境中,功能是将ES2015+转换为Javascript 向后兼容的代码
- 本质:操作『AST(抽象语法树)』来完成代码的转译
编译过程
『解析(Parse)』: 通过词法分析和语法分析将源码转为AST。
- 词法分析: 把字符流(Char Stream)源码转为令牌流(Token Stream)
- 语法分析:把令牌流转为AST(源代码的抽象语法结构的树状表示)
『转换(Transform)』:将高版本的AST转换为支持低版本语法的AST,并优化
『生成(Generate)』: 将AST转换为字符串形式的低版本代码,并创建Source Map映射
优点
- 可压缩 – 提供assumptions选项
删除类型注释
- 可以安装 Flow preset 和 Typescript preset 来做类型检查
- flow preset – js的静态类型检查器
1
2安装:npm install --save-dev @babel/preset-flow
使用:const square = (n: number) : number => n * n - typescript preset – ts的静态类型检查器
1
2安装:npm install --save-dev @babel/preset-typescript
使用:const Greeter(greeting: string) { this.greeting = greeting }