xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

Babel 编译过程原理剖析 All In One

Babel 编译过程原理剖析 All In One

Babel 是一个 js 编译器与大多数编译器的工作过程类似可以分为三部分

  1. 解析 / Parse
    将 js 源代码转换成更加抽象的表示方法(抽象语法树 / AST);
    包括词法分析和语法分析
    词法分析主要把字符流源代码(Char Stream)转换成令牌流( Token Stream),
    语法分析主要是将令牌流转换成抽象语法树 / Abstract Syntax Tree。

  2. 转换 / Transform
    通过 Babel 的插件能力,对(抽象语法树)做一些特殊处理,将高版本语法的 AST 转换成支持低版本语法的 AST;
    让它符合编译器的期望,当然在此过程中也可以对 AST 的 Node 节点进行优化操作,比如添加、更新以及移除节点等。

  3. 生成 / Generate
    将 AST 转换成字符串形式的低版本 js 代码,同时创建 Source Map 映射

refs



©xgqfrms 2012-2020

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2022-03-05 21:25  xgqfrms  阅读(115)  评论(1编辑  收藏  举报