简介
babel
是一个JavaScript编译器,可以将ES2015+ 转换为向后兼容的JavaScript代码,
Babel的原理是将JavaScript代码分为三个阶段: 解析, 转换和输出
1. 解析阶段
Babel首先会使用 Babylon
解析器将输出的 ES2015+diamagnetic解析成抽象语法树(AST), 抽象语法树是
一种JSON形式表示的代码结构的数据结构,他将代码分解成语法单元,并按照层次结构组织起来,
抽象语法树包含了代码的所有信息,包括变量,函数语句等
传送门
例如:
let a = 12
语法树:
2. 转换阶段
Babel的转换阶段会遍历抽象语法树, 并根据预设的转换规则,对代码进行转换; 转换规则是一组插件,
每个插件都可以针对不同的代码结构进行转换;
例如ES6的箭头函数在ES5中没有对应的语法, Babel的箭头函数插件会将箭头函数 转换为普通函数,Babel还支持自定义插件, 开发者可以根据自己的需求的需求写插件
3. 输出阶段
Babel的输出阶段会将转换后的抽象语法树转换为JavaScript代码, 输出格式可以是浏览器 或者 nodeJs可以执行的代码,也可以是其他JavaScript的的转换工具可以处理代码格式, Babel也支持输出抽象语法树,方柏霓开发者进行后续处理
总之Babel可以通过解析,转换,和输出三个阶段, 将ES2015+ 代码转换为向后兼容的JavaScript代码,
Babel的插件机制使得他可以支持新的JavaScript特性,并使得开发可以根据自己的需求自定义转换规则