js的 Babel原理

news/2025/2/11 19:52:49/

简介

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特性,并使得开发可以根据自己的需求自定义转换规则


http://www.ppmy.cn/news/496782.html

相关文章

常用的水下图像数据集

Image Enhancement, Color Correction/Restoration EUVP dataset: Data, Paper, Code. (paired and unpaired data; FUnIE-GAN) Underwater imagenet: Data, Paper, Code. (paired data; UGAN) UIEBD dataset: Data, Paper, Code. (Water-Net) SQUID dataset: Data,

java 客户端操作HDFS

1、windows上部署hadoop包 部署包win版本 源码包zip包 lib整合:共121个jar包 $HADOOP_PREFIX/share/hadoop/{common,hdfs,mapreduce,yarn,tools}/{lib,.}*.jar 将windows版本hadoop/bin/hadoop.dll 放到c:/windows/system32下 2、windows环境变量配置 hadoop的…

手机新建相册之后把照片文件放哪

小米手机当把一些照片放入一个【新的文件名】相册之后,比如命名为“2019”(相册名称没有引号),那么它被放置在了: 1、内部储存––MIUI文件夹––Gallery-2019 2、手机内存DCIM文件夹中的camera文件夹 3、从手机-文…

maven打包可执行jar的pom配置---笔记

使用maven把一个java项目打成可以用java -jar命令执行的jar &#xff0c;需要配置的pom文件内容如下 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/20…

SpringBoot 打包时不将 lombok 打包进 jar 包

参考文章&#xff1a;How to prevent lombok from being packaged into Spring Boot jar? 总的来说就是在 build 插件中将 lombok 排除&#xff0c;详见代码&#xff1a; <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-b…

新买的四件套不洗可以用吗

新买的四件套不洗不可以用。一般床单被罩使用的布&#xff0c;是经过染色而制成的&#xff0c;可能会有甲醛成份残留。而且从生产再到包装到塑料袋中&#xff0c;这中间可能会沾上一些细菌、灰尘、纤维垃圾等脏东西。所以买回来的四件套一定要进行清洗再使用&#xff0c;避免和…

maven打包之胖包与瘦包

IDEA的Maven打包步骤 胖包和瘦包的区别&#xff1a; 胖包&#xff1a;将maven项目中的依赖包和项目打为一个包 瘦包&#xff1a;直接打包&#xff0c;不打包依赖包&#xff0c;仅打包出项目中的代码到JAR包中。 maven打胖包 胖包的意识就是可以直接使用 java -jar 的命令在…

SpringBoot多模块开发且只打包一个jar就可运行

新建SpringBoot主项目 新建SpringBoot主项目并删除多余文件&#xff0c;只留下pom.xml文件 pom.xml配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.o…