参考:Babel 是怎么工作的
Babel 是一个 JavaScript 编译器。
1 做 & 不做
Babel 只是转译新标准引入的语法,比如:
箭头函数
let / const
解构
哪些在 Babel 范围外?对于新标准引入的全局变量、部分原生对象新增的原型链上的方法,Babel 表示超纲了。
全局变量
Promise
Symbol
WeakMap
Set
includes
generator
函数
对于上面的这些 API,Babel 是不会转译的,需要引入 polyfill 来解决。
2 Babel 编译的三个阶段
Babel 的编译过程和大多数其他语言的编译器相似,可以分为三个阶段:
解析(Parsing):将代码字符串解析成抽象语法树。
转换(Transformation):对抽象语法树进行转换操作。
生成(Code Generation): 根据变换后的抽象语法树再生成代码字符串。