nodejs 012:Babel(巴别塔)语言转换与代码兼容
这里写目录标题
- 安装 Babel
- 配置
- presets配置:常见的 Babel Presets
- plugins配置:以 plugin-transform-class-properties 的类中属性为例
- index.jsx
- Babel 是一个独立的 JavaScript 编译器,主要用于将现代 JavaScript 代码转换为旧版本的 JavaScript,以提高兼容性。
安装 Babel
npm install --save-dev @babel/core @babel/cli @babel/preset-env
配置
- 然后需要配置 Babel,通过创建一个
.babelrc文件或在babel.config.json中设置Babel 配置。 - Babel 的配置通常包括 presets 和 plugins。其中 presets 用于指定一组预设的转换规则,plugins则通过自定义的插件形式进行代码兼容转换。
- babel.config.json 示例:
{"presets": ["@babel/preset-env","@babel/preset-react"],"plugins": ["@babel/plugin-transform-runtime"]
}
presets配置:常见的 Babel Presets
@babel/preset-react:- 这个 preset 用于转换 React 代码。它包括转换 JSX 语法的插件。
- 配置示例:
// https://babel.nodejs.cn/docs/babel-preset-react
{"presets": [["@babel/preset-react",{"pragma": "dom", // default pragma is React.createElement (only in classic runtime)"pragmaFrag": "DomFrag", // default is React.Fragment (only in classic runtime)"throwIfNamespace": false, // defaults to true"runtime": "classic" // defaults to classic// "importSource": "custom-jsx-library" // defaults to react (only in automatic runtime)}]]
}
-
@babel/preset-typescript:- 这个 preset 用于将 TypeScript 代码转换为 JavaScript 代码,移除 TypeScript 特有的类型信息。
-
@babel/preset-env:- 这个 preset 用于将现代 JavaScript 代码转换为兼容的 JavaScript 代码。它根据目标环境(如浏览器或 Node.js 的版本)自动选择需要的插件和 polyfills。
- 可以通过配置
targets字段指定要支持的浏览器或环境。例如:{"presets": [["@babel/preset-env",{"targets": "> 0.25%, not dead"}]] } - 上面的配置表示目标是市场份额大于 0.25% 的浏览器,并且不是“已死”的浏览器(即不再接收更新的浏览器)。
plugins配置:以 plugin-transform-class-properties 的类中属性为例
- Babel 是一个 JavaScript 编译器,允许开发者使用最新的 JavaScript 语法和特性,并将代码转译成兼容旧版本浏览器的代码。为了扩展 Babel 的功能,有很多插件可供使用。
- 命令进行安装(如果没有打包工具帮助自动安装的话):
npm install --save-dev @babel/plugin-transform-class-properties .babelrc或(babel.config.json)配置
"plugins": [["@babel/plugin-transform-class-properties",{ "loose": true }]// 类中属性语言https://babel.nodejs.cn/docs/babel-plugin-transform-class-properties]
- 比如对以下
.html文件的渲染
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="root"></div><script src="./js/index.jsx"></script>
</body>
</html>
index.jsx
- 由
import { h, Component, render } from 'preact';class App extends Component { constructor(props) { // constructor(props): 构造函数是类组件的初始化方法super(props);this.state = {// this.state: 定义组件的初始状态。在这里,state 是一个对象,用于存储组件的内部数据。Text: "WORLD",};// 事件处理函数的绑定等代码,函数bind到this对象上// this.onIpcChange = this.onIpcChange.bind(this);}render() { return(<h1>HELLO {this.state.Text}</h1>)}
}render(<App />,document.querySelector('#root'))
- 简化为
import { h, Component, render } from 'preact';class App extends Component { state = {Text: "WORLD",};render() { return(<h1>HELLO {this.state.Text}</h1>)}
}render(<App />,document.querySelector('#root'))

相关文章:
nodejs 012:Babel(巴别塔)语言转换与代码兼容
这里写目录标题 安装 Babel配置presets配置:常见的 Babel Presetsplugins配置:以 plugin-transform-class-properties 的类中属性为例index.jsx Babel 是一个独立的 JavaScript 编译器,主要用于将现代 JavaScript 代码转换为旧版本的 JavaScr…...
时间安全精细化管理平台存在未授权访问漏洞
漏洞描述 登录--时间&安全精细化管理平台存在未授权访问漏洞导致与员工信息泄露 FOFA: body"登录--时间&安全精细化管理平台" 漏洞复现 POC: IP/acc/_checkinoutlog_/...
软件卸载工具(windows系统)-geek
有时候软件卸载会很麻烦,使用geek会比较方便。但是针对一些特别大的软件,geek也好像会稍微费点劲(比如MATLAB2022A),不过针对一般常规软件的卸载,geek就可以有效地完全卸载了,使用方法也很简单,…...
第三篇 第14篇 工程计价依据
第三篇 工程计价 第14篇 工程计价依据 14.1 工程造价管理标准体系与工程定额体系 14.1.1 工程造价管理标准体系 1.基础标准 工程造价术语标准建筑工程计价设备材料划分标准有关建设工程费用构成通则。建设工程费用构成和分类是工程计价最重要的基础工作。 2.管理规范 建筑…...
java 异常-Exception
异常的概念 Java 语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类 (1)Error(错误):Java 虚…...
爬虫逆向学习(六):补环境过某数四代
声明:本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录 引用博客: https://blog.csdn.net/shayuchaor/article/details/103629294 https://blog.csdn.net/qq_36291294/article/details/128600583 https://blog.csdn.net/weixin_…...
IO流体系(FiletOutputStream)
书写步骤: 1.创建字节输出流对象 细节1:参数是字符串表示的路径或者是File对象都是可以的 细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的。 细节3:如果文件已经存在,则会清空文件 2.写数据 细节:write方法的参数…...
网络设备登录——《路由与交换技术》实验报告
目录 一、实验目的 二、实验设备和环境 三、实验记录 1.通过 Console 登录 步骤1:连接配置电缆。 步骤2:启动PC,运行超级终端。 步骤3:进入Console 配置界面 2.通过 Telnet 登录 步骤1:通过 Console 接口配置 Telnet 用户。 步骤2:配置 super 口令 步骤3:配置登录欢迎…...
CSS——网格布局(display: grid)之下篇
CSS——网格布局(display: grid)之下篇 前面我们介绍了网格布局的基础的创建以及一些比较基础的属性,下面我们将介绍网格布局的剩余部分,还将结合实例来进行细致的讲解(图文并茂,生动形象有内涵࿰…...
低势期操作
《周易》讲事务发展有六个阶段: 第一阶段:潜龙勿用。 第二阶段:见龙在田。 第三阶段:终日乾乾。 第四阶段:或跃在渊。 第五阶段:飞龙在天。 第六阶段:亢龙有悔。 现在大环境不好ÿ…...
IMS 呼叫流程(详细)
目录 业务模型 典型组网如图1所示 信令流程 具体的语音流程如图2所示 主叫信令面流程 01:UE_A->P-CSCF/ATCF 02:P-CSCF/ATCF_A->PCRF_A 03:PCRF_A->PCSCF/ATCF_A 04:P-CSCF/ATCF_A 处理(把S-CSCF加到Route) 05:S-CSCF_A->MMTel AS/SCC AS_A 06:MM…...
系统架构设计师:系统架构设计
简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师:系统架构设计前言软件架构设计与生命周期SA 实现阶段主要关注的内容A…...
win11不显示已经打开的窗口
...
数学建模常用模型全面总结(含适用条件、优点、局限性和应用场景)
目录 1. 代数模型(Algebraic Models)2. 微分方程模型(Differential Equation Models)3. 概率模型(Probabilistic Models)4. 优化模型(Optimization Models)5. 统计模型(S…...
RabbitMQ消费者确认和重复机制
消费者确认机制 为了确认消费者是否成功处理消息,RabbitMQ提供了消费者确认机制(Consumer Acknowledgement)。即:当消费者处理消息结束后,应该向RabbitMQ发送一个回执,告知RabbitMQ自己消息处理状态。回执…...
【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL77
编写乘法器求解算法表达式 描述 编写一个4bit乘法器模块,并例化该乘法器求解c12*a5*b,其中输入信号a,b为4bit无符号数,c为输出。注意请不要直接使用*符号实现乘法功能。 模块的信号接口图如下: 要求使用Verilog HDL语言实现以上…...
thinkPHP 8.0.4 安装
windows 上安装最新版 thinkPHP8.0.4 下载phpStudy V8.1:小皮面板安装Composer2.x,Composer是PHP的一个依赖管理工具,主要功能包括依赖管理、版本控制、自动加载、扩展开发以及集成其他工具。安装 php8.0.2 4. 网站-管理-compose,…...
在k8s中,客户端访问服务的链路流程,ingress--->service--->deployment--->pod--->container
ingress是一个API资源。 其核心作用是nginx网页服务器。 当客户端访问服务器不同的url时, 用不同的location提供服务。 在k8s之外,nginx的配置一般如下: http {server {listen 80;server_name localhost;location / {root html; …...
寄存器二分频电路
verilog代码 module div2_clk ( input clk, input rst,output clk_div);reg clk_div_r; assign clk_div clk_div_r;always(posedge clk) beginif(rst)beginclk_div_r < 1b0;endelsebeginclk_di…...
Kafka3.8.0+Centos7.9的安装参考
Kafka3.8.0Centos7.9的安装参考 环境准备 操作系统版本:centos7.9 用户/密码:root/1qazXSW 主机名 IP地址 安装软件 下载地址 k1 192.168.207.131 jdk1.8zookeeper3.9.2kafka_2.13-3.8.0efak-web-3.0.1 1) Java Downloads | Oracle …...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
