1. 什么是babel
Babel 是一个 JavaScript 编译器。他把最新版的javascript编译成当下可以执行的版本
,简言之,利用babel就可以让我们在当前的项目中随意的使用这些新最新的es6,甚至es7的语法。
2、babel 是如何工作的
首先得要先了解一个概念:抽象语法树(Abstract Syntax Tree, AST),Babel 本质上就是在操作 AST 来完成代码的转译。
2.1、AST是什么
AST:即用一个树型结构的对象来描述js代码
分析 AST:https://astexplorer.net/
AST 规范:https://github.com/estree/estree
2.2、Babel 工作过程
上面说过,Babel 的功能很纯粹,它只是一个编译器。
大多数编译器的工作过程可以分为三部分:
-
1、Parse(解析):将源代码转换成抽象语法树AST;
一般来说,Parse 阶段可以细分为两个阶段:
词法分析
(Lexical Analysis, LA)和语法分析
(Syntactic Analysis, SA)。词法分析:就是把一句完整的代码拆成一块一块的,形成了一个数组,数组的第一项都是一个对象,是对每一小块语法的描述;
语法分析:通过语法分析把每个对象转化为 AST -
2、Transform(转换):对AST做一些特殊处理,让它符合编译器的期望
Transform,即操作 AST, 也就是操作其中的节点,可以增删改这些节点,从而转换成实际需要的 AST
-
3、Generate(代码生成):将第二步经过转换过的AST(抽象语法树)生成新的代码