Babel原理

本文介绍了Babel的主要工作原理,包括parsing、transforming和generating三个阶段,以及它如何通过babylon、babel-traverse和babel-generator等核心包实现JS代码的版本转换。还探讨了Babel中的plugins、presets、polyfill和runtime的概念,帮助理解Babel在ES6+代码转译中的作用。
摘要由CSDN通过智能技术生成

前言

在学习es6的时候就一直希望了解一下bable的转码原理,偶然的机会查了查,整理了一下。


Bable的主要工作原理
Bable是一个转译器,与编译器不同。bable主要负责目标代码的版本转换,只处理同一种语言,并且只负责输出转码后的代码串。大概分三个阶段:

  • parsing 生成AST抽象语法树(将整个代码字符串分割成语法单元 ,进行语义分析,在分词结果的基础之上分析语法单元之间的关系)
  • transforming 修改语法树,生成新的语法树
  • generating 根据新的语法树生成目标代码

Babel主要由几个核心包组成

  • babel-core:babel转译器本身,提供了babel的转译API。webpack的babel-loader就是调用这些API来完成转译过程。
  • babylon:js的词法解析器
  • babel-traverse:用于对AST的遍历,主要给plugin用
  • babel-generator:根据AST生成代码

Bable核心概念

  • plugins
    主要在第二阶段transforming,修改AST树,生成新的语法树时使用。bable会根据配置的plugins进行AST的修改。

  • presets

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值