Babel的深度解析

news2025/1/24 17:33:39
在开发中我们很少直接去接触babel,但是babel对于前端开发来说,目前是不可缺少的一部分:
  • 开发中,我们想要使用ES6+的语法,想要使用TypeScript,开发React项目,它们都是离不开Babel的;
  • Babel对于我们理解代码从编写到线上的转变过程直观重要;
  • Babel是一个工具链,主要用于旧浏览器或者缓解中将ECMAScript 2015+代码转换为向后兼容版本的JavaScript;
    包括:语法转换、源代码转换、Polyfill实现目标缓解缺少的功能等;

1. Babel命令行使用

babel本身可以作为一个独立的工具(和postcss一样),不和webpack等构建工具配置来单独使用。
在命令行尝试使用babel,需要安装如下库:
  • @babel/core:babel的核心代码,必须安装;
  • @babel/cli:可以让我们在命令行使用babel;
npm install @babel/cli @babel/core
使用babel来处理我们的源代码:
  • src:是源文件的目录;
  • --out-dir:指定要输出的文件夹dist;
npx babel src --out-dir dist

2. 关于Babel插件的使用

比如我们需要转换箭头函数,那么我们就可以使用箭头函数转换相关的插件:
npm install @babel/plugin-transform-arrow-functions -D
npx babel src --out-dir dist --plugins=@babel/plugin-transform-arrow-functions

关于const、let的转换需要用到另一个插件:

需要使用 plugin-transform-block-scoping 来完成这样的功能;
npm install @babel/plugin-transform-block-scoping -D
npx babel src --out-dir dist --plugins=@babel/plugin-transform-block-scoping
,@babel/plugin-transform-arrow-functions

3. Babel的预设

如果要转换的内容过多,一个个设置是比较麻烦的,我们可以使用预设(preset):
安装@babel/preset-env预设:
npm install @babel/preset-env -D
执行如下命令:
npx babel src --out-dir dist --presets=@babel/preset-env
上面是关于单独使用babel来转换js代码的使用方式及一些转换插件

4. Babel的底层原理

babel做到将我们的一段代码(ES6、TypeScript、React)转成另外一段代码(ES5)的原理
其实可以将babel看成就是一个编译器。
Babel编译器的作用就是将我们的源代码,转换成浏览器可以直接识别的另外一段源代码;
babel工作的整个过程简单记录:
  • 解析阶段
  • 转换阶段
  • 生成阶段

 具体每一步流程大概可以分为:

 以上只是是我在学习coderwhy老师的webpack课程中对Babel的简单理解和记录,想要了解更多关于webpack的配置分析及原理,可以去看coderwhy老师的课程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能测试分析-Java内存溢出定位案例(1)

Java内存溢出分析案例 Java常见内存溢出类型:堆内存溢出现象内存溢出分析下载安装分析软件下载 hprof 文件MAT 分析定位问题Shortest Paths To the Accumulation Point 内存溢出分析参考文档: Java常见内存溢出类型: 常见的内存溢出主要有以…

90、Neural Residual Radiance Fields for Streamably Free-Viewpoint Videos

简介 主页:https://aoliao12138.github.io/ReRF/ 前提知识:DeVRF:https://jia-wei-liu.github.io/DeVRF/ 先利用多台固定相机拍摄动态场景,在第一帧利用DVGO重建好半显示场景,后续则是通过预测体素x,y,z三个方向的运…

crontab -e 系统定时任务

crontab -e解释 crontab 是由 “cron” 和 “table” 两个单词组成的缩写。其中,“cron” 是一个在 Linux 和类 Unix 操作系统中用于定时执行任务的守护进程,而 “table” 则是指一个表格或者列表,因此 crontab 就是一个用于配置和管理定时任…

PHP 单笔转账到支付宝账户,支付宝公钥证书实现版本

支付宝某些业务只能使用公钥证书方式来验签 如:即使转账 红包等 笔者就要实现这样一个功能,【单笔转账到支付宝账户】,采用支付宝公钥证书签名来实现。 话不多说,流程先走起 第一步:下载支付宝秘钥生成器 由于我们使…

手把手教你 DVOL

分享本文在朋友圈的读者可获得本文数据和 Python 代码。留个言说已分享(不用截屏)我相信你,我会发给你百度盘下载链接。 本文长度为 6393 字,建议阅读 32 分钟 题图:SignalPlus Dashboard 0 引言 Deribit volatility (…

基于 VITA57.1 的 2 路 2GSPS/2.6GSPS/3GSPS 14bit AD 采集 FMC 子卡模块

板卡概述 FMC152 是一款基于 VITA57.1 标准的,实现 2 路 14-bit、2GSPS/2.6GSPS/3GSPS AD 采集 FMC 子卡模块。该模块可直接与 FPGA 载卡配合使用,板卡 ADC 器件采用 ADI 公司的 AD9208 芯片, 与 ADI 公司的 AD9689 可以实现 PIN 脚兼容。该…

URI URL URN定义

1 定义 URI:全称Uniform Resource Identitfier,也就是统一资源标识符,可以标识互联网上某一资源,用来标识抽象或物理资源的一个紧凑字符串。 URL:全称Uniform Resource Locator,统一资源定位符&#xff0c…

【hello Linux】进程程序替换

目录 1. 程序替换的原因 2. 程序替换原理 3. 替换函数 4. 函数解释 5. 命名理解 6.简陋版shell的制作 补充: Linux🌷 1. 程序替换的原因 进程自创建后只能执行该进程对应的程序代码,那么我们若想让该进程执行另一个“全新的程序”这 便要用…

JVM系列(八) JVM 垃圾收集算法

前面我们了解了很多JVM配置垃圾回收的方式,但是具体垃圾是如何被回收的,或者说垃圾回收算法有哪些?今天我们文章主要讲解一下垃圾回收算法 1.分代收集理论 我们都知道 很早的JVM会把堆分为几个区域,新生代,老年代&am…

pandas读取Excel核心源码剖析,面向过程仿openpyxl源码实现Excel数据加载

📢作者: 小小明-代码实体 📢博客主页:https://blog.csdn.net/as604049322 📢欢迎点赞 👍 收藏 ⭐留言 📝 欢迎讨论! 今天我们将研究pandas如何使用openpyxl引擎读取xlsx格式的Excel的…

el-tabs嵌套el-upload使用

需求:1 .第一个标签展示固定字样,且不能删除,最少上传三张图片。 2. 其余标签双击可编辑字样,10字以内,可删除,均可上传图片。 3. 号按钮可点击添加标签,标签数量控制在10个以内。 4. 当标签下无…

一文学会VSCode代码同步至GitHub

一、上手GitHub 1. 了解GitHub 上手GItHub之前首先要了解一下GItHub的关键词,如下: (1) 仓库 (Repository) 仓库是用来存放项目代码,每一项目对应一个仓库。(2) 收藏 (Star) 收藏别人的仓库,方便自己查找。(3) 复制/克隆项目 (…

忆暖行动|“以前的住宿也没有这么好的环境,住的都是土房子,一下雨就哗哗掉墙皮”

常忆旧时苦 方思今日甜 新年将至,彩灯与烟火闪烁。值此佳节,我们去看望了一位65岁的退休教师,并与她进行了交谈,从奶奶的讲述中,我们了解到过去生活的不易,珍惜当下的美好生活。 迎接新年 为迎接新年&am…

base64、File、Blob、ArrayBuffer几种文件格式介绍以及互转

文章目录 关系介绍BlobFileFileReader二进制数组ArrayBuffer对象URL.createObjectURLbase64 转化file转base64blob转base64base64转blobbaes64转fileblob转fileblob转ArrayBufferfile转ArrayBuffer 关系 介绍 Blob 介绍 是一个不可变、原始数据的类文件对象本质上是js的对象 s…

后悔了怎么办 - undo日志

一、undo日志 概念: 把回滚时所需的东西都给记下来 二、事务id 给事务分配id的时机 (1)对于只读事务来说,只有在它第一次对某个用户创建的临时表执行增、删、改操作时才会为这个事务分配一 个 事务id ,否则的话是不…

4.3 转换与处理时间数据

4.3 转换与处理时间数据 4.3.1 转换字符串时间为标准时间1、Timestamp2、DatetimeIndex或者PeriodIndexDatetimeIndex与PeriodIndex函数及其参数说明 4.3.2 提取时间序列数据信息Timestamp类常用属性及说明 4.3.3 加减时间数据Timedelta类周期名称、对应单位及其说明 4.3.4 任务…

Java知识总结

https://www.bilibili.com/video/BV1ys4y1S7Lc 1、Java中线程的实现方式 为什么说本质上只有一种实现线程的方式?实现 Runnable 接口究竟比继承 Thread 类实现线程好在哪里? 实现 Runnable 接口 public class RunnableThread implements Runnable { O…

ai智能改写文案-ai同义转换

文案创作是现代广告营销中不可或缺的一环,一个好的文案不仅可以提升产品的购买率,还可以实现品牌等方面的推广。但是,文案的创作需要耗费大量的时间和精力,如果能够利用智能化技术进行改写,不仅可以大大缩短文案创作时…

JAVA内存不足导致频繁回收和swap引起的性能问题 故障重现(内存篇2)

背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡。 我按经验开始调优,在每个关键步骤…

本地安装directus

简介 Directus 是用于管理 SQL 数据库内容的实时 API 和 App 控制面板。 API会根据数据库模式/内容的实时更改动态更新(无需重新启动服务器)。 Directus安装在任何新的或现有的 SQL 数据库之上,提供 API 层(REST、GraphQL、JS-SD…