nodejs 012:Babel(巴别塔)语言转换与代码兼容

JS & 介绍 Babel 的使用及 presets & plugins 的概念 Babel 给 ES6/7/8/9 Typescript、React / Vue3 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

  1. @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)
      }
    ]
  ]
}
  1. @babel/preset-typescript:

    • 这个 preset 用于将 TypeScript 代码转换为 JavaScript 代码,移除 TypeScript 特有的类型信息。
  2. @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'))

在这里插入图片描述

babel实战之预设(Presets) 1.简介 不想自己动手组合插件?没问题!preset 可以作为 Babel 插件的组合,甚至可以作为可以共享的options配置。 2.官方 Preset 我们已经针对常用环境编写了一些 preset: @babel/preset-env @babel/preset-flow @babel/preset-react @babel/preset-typescript 3.Stage-X(实验性质的 Presets) stage-x preset 中的任何... 阅读详情

相关推荐

目标检测: 一文读懂 YOLOX

论文:YOLOX: Exceeding YOLO Series in 2021 论文链接:https://arxiv.org/pdf/2107.08430.pdf 代码链接:https://github.com/Megvii-BaseDetection/YOLOX. 文章目录1 为什么提出YOLOX2 YOLOX 网络架构3 YOLOX 实施细节3.1 backbone3.2 neck3.3 Head3.3.1 Decoupled Head3.3.2 Anchor-free3.4 如何计算Loss3.5 如

weixin_46142822的博客 3万+

Node.js中的Babel魔法:解锁ES6语法体验

在Node.js中通过babel体验ES6模块化,babel相关的配置;了解ES6模块化,能够默认导入导出、按需导入导出、直接导入并执行模块代码。

qq_53911056的博客 3153

逆向实战:如何绕过iTunes 12.6.5.3的反调试机制(附X64dbg插件配置)

本文深入剖析了iTunes 12.6.5.3的反调试机制与登录协议。通过X64dbg动态调试与IDA静态分析,详细演示了如何绕过其反调试检测,并定位到核心的登录协议加密函数,揭示了其请求签名(X-Apple-ActionSignature)的生成逻辑与依赖关系,为客户端安全研究与协议分析提供了实战思路。

weixin_29202213的博客 742

前端开发基础知识(nodejs、npm、es6、模块化、babel、webpack、css-loader、vue-cli)

NPM全称NodePackageManager,是Node.js包管理工具,是全球最大的模块生态系统,里面所有的模块都是开源免费的;例如,前端开发建一个工作区web,该工作区安装并启用了liveserver插件,python开发建一个python区,该工作区可以禁用liveserver。Babel的配置文件是.babelrc,存放在项目的根目录下,该文件用来设置转码规则和插件,presets字段设定转码规则。Node.js加了许多Node.js专属API,例如文件系统,进程,http功能。.........

生而为人我很抱歉 767

Xilinx FPGA 100G RDMA开发实战:基于AXI Lite配置的ROCE V2高速通信系统搭建

本文详细介绍了在Xilinx FPGA上搭建100G ROCE V2高速通信系统的实战过程。通过分析RDMA技术优势与FPGA实现的必要性,重点阐述了基于AXI Lite接口配置ERNIC IP核的关键步骤,包括硬件系统构建、驱动开发及与商用网卡的互通测试,旨在实现兼具高性能与灵活性的网络加速方案。

js777的博客 576

从UE4到Unity:双叶高光技术在角色皮肤渲染中的移植全流程

本文详细解析了将UE4中的双叶高光技术移植到Unity引擎的全流程。该技术通过模拟皮肤油脂层和真皮层的不同反射特性,能显著提升角色皮肤渲染的真实感。文章从核心原理、贴图资产处理、Shader代码重构到参数调校,提供了完整的跨引擎移植实战指南,帮助开发者实现高质量的皮肤质感还原。

alice7model的博客 478

尚医通(五)前端知识 nodejs | npm | babel | 模块化 | webpack

尚医通(五)前端知识 nodejs | npm | babel | 模块化 | webpack

Knight 839

(详细教程)opencv+pycharm+笔记本摄像头 做一个人脸识别

文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 一、安装opencv-python 这里推荐使用pycharm直接安装opencv-python 打开文件——设置——python解释器——点击+号 搜索opencv-python,点击安装包,等待片刻即可安装好 检查是否安装好,新建一个项目输入以下代码,若无报错则安装好 import cv2 二、准备分类器 咱们使用opencv官方提供的分类器,包括面部识别,侧...

qq_52852432的博客 1万+

在NodeJS中安装babel

1.安装babel 打开终端,输入命令:cnpm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node @babel/polyfill 如果你需要在一个Node项目中使用Babel,你可以使用babel-core 如果你想要在命令行使用Babel,你可以安装babel-cli babel-node命令可以直接运行ES6脚本 @babel/preset-env 转化最新语法如箭头函数, class, 扩展运算符,想要转换

YanLong_Lin的博客 1090

【探秘】二维异形件重叠移除算法:从度量到消除的实战解析

本文深入解析二维异形件重叠移除算法的核心技术与实战应用,涵盖重叠度量、零件扰动策略及消除方法。通过NFP(临界多边形)技术、空间分区加速等优化手段,有效解决异形件排版中的重叠问题,提升材料利用率和计算效率。适合制造业、CAD软件开发者及算法工程师参考。

weixin_28698059的博客 253

【算能】TPU-MLIR 工具链之model_deploy

model_deploy.py 是算能 TPU-MLIR 工具链中实现模型高效部署的核心组件,通过灵活的量化配置与硬件优化,可在 ​精度损失 ≤1% 的前提下实现 ​3-5 倍加速。开发者需重点关注校准数据质量、混合精度策略及硬件兼容性

浩瀚之水的专栏 288

Nodejs使用Babel的五步操作

第一:创建bin文件夹,并创建www.js                                          源码 第二:安装babel相关依赖 npm install --save babel-polyfill npm install babel-register --save npm install babel-preset-es2015 --save npm...

令狐喵喵 5600

主题045:四足机器人的运动仿真

四足机器人(Quadruped Robot)是模仿哺乳动物四肢运动设计的机器人系统,具有优异的地形适应性和运动稳定性。与双足机器人相比,四足机器人在静态和动态稳定性方面具有天然优势,能够在复杂地形(如楼梯、斜坡、碎石地面)上稳定行走,因此在野外探索、救援任务、军事应用等领域具有广阔的应用前景。本教程将介绍四足机器人的运动学建模、步态规划、稳定性分析和控制策略,并通过Python仿真验证相关理论。典型的四足机器人每条腿包含3个关节:常见的腿部构型包括:对于单腿,足部位置 pfoot\mathbf{p}_{fo

kkchenjj的博客 682

【ES6 01】Node.js Babel转码器 配置文件.babelrc 命令行转码工具@babel/cli REPL环境 babel-node register模块 polyfill 浏览器环境

【ES6 01】Node.js Babel转码器 配置文件.babelrc 命令行转码工具@babel/cli REPL环境 babel-node register模块 polyfill 浏览器环境 ECMAScript 6.0的目标是使JS可以用来编写大型应用程序,成为企业级开发语言 Node.js是JS的服务器运行环境(runtime),对ES6的支持度更高除了默认打开的功能,还有一些语法功能可以实现但没有打开 使用下面的命令,可以查看 Node.js 默认没有打开的 ES6 实验性语法

Zane Boy's blogs 759

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Babel 实战: Node 环境下使用 Babel 开发的 4 种运行配置方案

Babel 实战: Node 环境下使用 Babel 开发的 4 种配置运行方案 文章目录Babel 实战: Node 环境下使用 Babel 开发的 4 种配置运行方案系列文章前言正文0. Node 环境0.1 运行脚本1. 使用 @babel/cli + node 运行1.1 安装核心依赖1.2 配置文件 & 运行命令2. 使用 @babel/register 动态编译脚本3. 使用 @babel/node 依赖引入 Babel4. 使用 webpack + babel-loader 编译 we

超悠閒的博客 2515

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

nodejs支持ES6语法(BABEL)

让nodejs支持ES6语法配置步骤:1.在使用Babel之前,可以使用es-checker检测一下node对ES6的支持情况 npm install es-checker -g 安装完毕后执行: es-checker 支持是90% 2.在你的node文件夹内,打开命令窗口执行 npm init 生成一个package.json文件,或者自己建一个package.json文件然后依次安

dandan_feifei的博客 4033

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

前端集

…

爱学习的Mr 陈 363

谈谈babel的preset-env

@babel/preset-env在官网介绍是一款自动管理浏览器版本和babel语法转换插件映射的一款工具。其中浏览器版本管理默认使用的是browserslist,可以通过browserslist的相关配置去指定需要兼容的浏览器版本列表。 @babel/preset-env会在编译的时候自动匹配需要使用哪些plugins去转换的你代码,默认会纳入该 @babel/preset-env版本发布前的ECMAScript的stage4提案内容。

蜡笔小开心❤的博客 703

node 配置 babel 的使用

一、配置文件.babelrc.babelrc 文件存放在项目的根目录下。{ "presets": [], "plugins": [] } presets 字段设定转码规则,你可以根据需要安装。$ npm install --save-dev babel-preset-es2015 # react转码规则 $ npm install --save-dev babel-preset...

Fuohua的博客 1313

十五分钟的Babel入门指南

十五分钟学会babel配置,不亏。

weixin_43554584的博客 1217

项目配置Babel

babel配置项

caiqian97的博客 1779

node中babel的使用

1.babel就是用来将JavaScript各种版本,转化为可以被浏览器执行的代码,例如: 为转化报错 2.安装babel需先安装babel-cli插件 cnpm install babel-cli --save babel-cli插件是用来编译代码文件,然而只安装babel-cli,直接babel com.js,会发现com.js只会被复制一遍,并不会转换代码。还需要安装babel-...

sjpeter的专栏 5389

Babel 入门教程

Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。 这意味着,你可以现在就用ES6编写程序,而不用担心现有环境是否支持。下面是一个例子。 // 转码前 input.map(item => item + 1); // 转码后 input.map(function (item) { return item + 1...

weixin_34095889的博客 716

拯救浏览器兼容性:Babel是前端开发的必备神器

Babel是一个流行的JavaScript编译工具,可以将高版本的JavaScript代码转换为向后兼容的代码,以便在旧版浏览器或Node.js环境中运行。Babel支持许多ES6和ES7的新特性,例如箭头函数、模板字符串、解构赋值、let和const关键字等等。Babel还支持插件的扩展,以便于应对更加灵活的需求。Babel已经成为了JavaScript开发中一个必不可少的工具之一。

你若盛开,清风自来 1873

babel教程

Babel是什么?

caiqian97的博客 1623

技术长期主义:用本分思维重构JavaScript逆向知识体系(一)Babel、AST、ES6+、ES5、浏览器环境、Node.js环境的关系和处理流程

**Babel、AST、ES6+、ES5、浏览器环境、Node.js环境** 的关系和流程

朴拙科技的博客 1753
上一篇: nodejs 011: nodejs事件驱动编程 EventEmitter 与 IPC
下一篇: nodejs 013:Prect 样式复用(multiple classes)例子
FakeOccupational
博客等级 码龄6年 2万+粉丝 1727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值