【日常记录】【JS】@babel/core @babel/polyfill @babel/preset-env core-js 介绍

news2025/1/25 4:38:06

文章目录

    • 1、介绍
      • 1.1 @babel/core
      • 1.2 @babel/polyfill
      • 1.3 @babel/preset-env
    • 2、基本使用
    • 3、参考链接

1、介绍

1.1 @babel/core

@babel/coreBabel 编译器的核心模块,它是 Babel 工具链的核心组件之一。Babel 是一个 JavaScript 编译器,主要用于将 ECMAScript 2015+(ES6+)的代码转换为向后兼容的 JavaScript 版本,以便在当前和旧版的浏览器或环境中运行。

@babel/core 模块负责实现 Babel 编译器的核心功能,包括词法分析、语法分析、转换和代码生成等。它提供了一个 API,使得开发者可以在自己的项目中集成 Babel,从而定制化地配置 JavaScript 代码的编译过程。
通过 @babel/core,开发者可以使用 Babel 提供的各种插件和预设(Presets)来实现不同的转换和编译需求。这些插件和预设可以帮助开发者在项目中使用最新的 JavaScript 特性,同时确保生成的代码在目标环境中能够正常运行
总之,@babel/core 是 Babel 编译器的核心模块,提供了基本的编译功能和 API,使得开发者可以通过 Babel 对 JavaScript 代码进行灵活的转换和编译。

1.2 @babel/polyfill

在这里插入图片描述

@babel/polyfill 是 Babel 提供的一个包,用于在目标环境中模拟 ES6+ 特性的缺失。它的主要作用是为目标环境提供缺失的 ES6+ 功能和实例方法,以便你可以在所有环境中使用新的语言特性,而不必担心兼容性问题

当你使用一些新的 ES6+ 特性时(例如 Promise、Map、Set 等),在一些旧版本的浏览器或环境中可能会遇到兼容性问题。这时候,你可以使用 @babel/polyfill 来填补这些缺失,使得你的代码可以在目标环境中正常运行

1.3 @babel/preset-env

在这里插入图片描述

翻译一下就是:@babel/preset-env是一个智能预设,允许您使用最新的JavaScript,而无需微观管理目标环境所需的语法转换(以及可选的浏览器polyfill)。这既让你的生活更轻松,也让JavaScript捆绑包更小!

大白话就是:他已经配置好了一些常用配置,你可以直接用,不需要一个一个的配置

主要配置包含以下:
在这里插入图片描述

2、基本使用

1、先准备一个代码片段

const abc = 1;
const fn = (name) => {
  console.log(name);
};

new Promise((resolve, reject) => {
  resolve(1);
});

[1, 2, 3].reduce((pre, cur) => {
  return pre + cur;
}, 0);

2、安装

npm i @babel/core  # 安装 @babel/core

transformSync :同步方法
babel.transformSync(code: string, options?: Object)
参数1:代码片段
参数2:配置项 options 配置项官方文档

这个方法返回值是一个对象,对象里面有一个code 是转化完成后的代码

import { transformSync } from "@babel/core";
import presetEnv from "@babel/preset-env";
import fs from "fs";

let code = fs.readFileSync("./code.js", "utf-8");
console.log(
  transformSync(code).code
);

在这里插入图片描述
目前毫无变化,是因为没有配置,options 是配置如何转化的

npm i @babel/preset-env # 安装这个预设

在这里插入图片描述
这个时候可以发现 babel/core 、@babel/preset-env 目前只是转的 语法(let const 箭头函数、for of 等等,具体可以看 这个 @babel/preset-env文档

这些 promise 、reduce 等等 这些高级的函数,可能有的地方,不支持,导致无法运行,这个时候就需要 @babel/polyfill

npm install --save @babel/polyfill 
import { transformSync } from "@babel/core";
import presetEnv from "@babel/preset-env";
import fs from "fs";

let code = fs.readFileSync("./code.js", "utf-8");
console.log(
  transformSync(code, {
    presets: [
      [
        presetEnv,
        {
          useBuiltIns: "usage",
          corejs: 3,
        },
      ],
    ],
  }).code
);

如果没有设置 corejs:3,会有以下错误
在这里插入图片描述

警告(@babel/preset-env):我们注意到您在使用“useBuiltIns”选项时没有声明核心js版本。目前,当没有版本通过时,我们假设版本为2.x。由于这个默认版本可能会在未来的Babel版本中更改,我们建议通过“corejs”选项显式设置您正在使用的core-js版本。
您还应该确保传递给“corejs”选项的版本与“package.json”的“dependencies”部分中指定的版本匹配。如果没有,则需要运行以下命令之一:

在这里插入图片描述

然后 npm i core-js ,现在用 3 ,然后再执行以下就没有这个错误了

3、参考链接

  • babeljs 官网
  • transformSync 官方文档
  • options 参数 官方文档
  • babel-polyfill 官方文档
  • babel-preset-env 官方文档

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

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

相关文章

数据结构——链表(单链表)

大家好,又是我(小锋),今天给大家带了一个比较有挑战的章节(链表),但是不用担心,小锋会陪大家一起度过。 顺序表的思考与问题 1. 中间/头部的插入删除,时间复杂度为O(N) …

rhcsa复习4

文件权限 文件的权限针对三类对象进行定义 owner 属主,缩写 u group 属组,缩写 g other 其他,缩写 o 每个文件针对每类访问者定义了三种主要权限 r : Read 读 - 文本文件 cat tac more less head tail paste d ls -l 列…

数字范围按位与

题目链接 数字范围按位与 题目描述 注意点 0 < left < right < 2^31 - 1包含 left 、right 端点 解答思路 返回区间内所有数字按位与的结果&#xff0c;所以区间内所有数字在某一位的值相同&#xff0c;则结果该位数字为该值&#xff0c;否则该位数字为0&#xf…

【漏洞复现】XETUX 系统 dynamiccontent 接口处存在远程代码执行漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

xftp突然无法连接虚拟机

问题描述 使用xftp连接虚拟机的时候一直显示 连接xxx.xxx.xx.xx失败 问题原因查找 首先打开本地cmd命令提示符 ping 你的虚拟机ip地址 我的是 ping 192.168.xx.xx 显示请求超时 解决方案&#xff1a; 点击打开更改适配器选项 右键vmnet 8——属性 如图前四个选项必选 单…

docker环境配置过程中的常见问题

1、pull镜像问题 docker pull jenkins/jenkins:lts Using default tag: latest Trying to pull repository docker.io/library/centos ... Get https://registry-1.docker.io/v2/library/centos/manifests/latest: Get https://auth.docker.io/token?scoperepository%3Alibr…

液体和固体介质的电气特性

本篇为本科课程《高电压工程基础》的笔记。 液体和固体介质广泛应用于高压电气设备内&#xff0c;作为设备的内绝缘。描述电介质的电气特性的四大参数是介电常数 ε \varepsilon ε、电导率 γ \gamma γ、介质损耗角正切 tan ⁡ δ \tan\delta tanδ和击穿场强 E b E_b Eb​。…

【智能家居项目】RT-Thread版本——DHT11获取温湿度 | MQTT上传到服务器 | 服务器控制外设

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《智能家居项目》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 这篇文章中&#xff0c;本喵将使用RT-Thread Studio来实现这个智能家居的项目&#xff0c;最终…

词令外卖节红包天天神券每天领取直达入口

词令外卖节红包天天领直达入口 1、打开「词令」关键词口令直达微信小程序&#xff1b; 2、输入词令「外卖红包88」关键词直达口令&#xff1b; 3、搜索直达进入外卖红包天天领入口&#xff0c;即可成功领取外卖节红包和天天神券点外卖可享受券后价优惠&#xff1b; *温馨提醒&…

故障诊断模型 | 基于多信号融合和改进的深度卷积生成对抗网络的不平衡数据故障诊断方法

文章目录 文章概述模型描述参考资料文章概述 本文提出了一种解决数据不平衡问题并提高诊断准确性的诊断方法。首先,通过小波变换处理来自多个传感器的信号,以增强数据特征,然后通过池化和拼接操作对其进行压缩和融合。随后,构建改进的对抗网络来生成新的样本进行数据增强。…

C#预处理器指令(巨细版)

文章目录 一、预处理器指令的基本概念二、预处理器指令的基本规则三、C# 预处理器指令详解3.1 #define 和 #undef3.2 #if、#else、#elif 和 #endif3.3 #line3.4 #error 和 #warning3.5 #region 和 #endregion 四、高级应用&#xff1a;预处理器指令的最佳实践4.1 条件编译的最佳…

.Net 知识杂记

记录平日中琐碎的.net 知识点。不定期更新 目标框架名称(TFM) 我们创建C#应用程序时&#xff0c;在项目的工程文件(*.csproj)中都有targetFramework标签&#xff0c;以表示项目使用的目标框架 各种版本的TFM .NET Framework .NET Standard .NET5 及更高版本 UMP等 参考文档&a…

公司服务器被.rmallox攻击了如何挽救数据?

公司服务器被.rmallox攻击了如何挽救数据&#xff1f; .rmallox这种病毒与之前的勒索病毒变种有何不同&#xff1f;它有哪些新的特点或功能&#xff1f; .rmallox勒索病毒与之前的勒索病毒变种相比&#xff0c;具有一些新的特点和功能。这种病毒主要利用加密技术来威胁用户&am…

Ubuntu20.04LTS+uhd3.15+gnuradio3.8.1源码编译及安装

文章目录 前言一、卸载本地 gnuradio二、安装 UHD 驱动三、编译及安装 gnuradio四、验证 前言 本地 Ubuntu 环境的 gnuradio 是按照官方指导使用 ppa 的方式安装 uhd 和 gnuradio 的&#xff0c;也是最方便的方法&#xff0c;但是存在着一个问题&#xff0c;就是我无法修改底层…

vue3使用vuedraggable实现拖拽(有过渡)

1. 安装与使用 vue中vuedraggable安装&#xff1a; pnpm i -S vuedraggablenext或者 yarn add vuedraggablenext注意&#xff1a;vue2和vue3安装的是不同版本的vuedraggable&#xff0c;写法上也会有一些区别。 比如在vue3中使用拖拽&#xff0c;要以插槽的方式&#xff0c;…

Unity DOTS中的baking(四)blob assets

Unity DOTS中的baking&#xff08;四&#xff09;blob assets blob assets表示不可变的二进制数据&#xff0c;在运行时也不会发生更改。由于blob assets是只读的&#xff0c;这意味着可以安全地并行访问它们。此外&#xff0c;blob assets仅限于使用非托管类型&#xff0c;这意…

从TCP/IP协议到socket编程详解

​ 我的所有学习笔记&#xff1a;https://github.com/Dusongg/StudyNotes⭐⭐⭐ ​ 文章目录 1 网络基础知识1.1 查看网络信息1.2 认识端口号1.3 UDP1.4 TCP1.4.1 确认应答机制1.4.2 TCP三次握手/四次挥手为什么是三次握手为什么是四次挥手listen 的第二个参数 backlog—— 全…

ES6中的Set集合

Set集合 ES6 提供了新的数据结构Set(集合)。 它类似于数组&#xff0c;但成员的值都是唯一的集合实现了 iterator 接口&#xff0c;所以可以使用「扩展运算符」和[for…of…」进行遍历集合的属性和方法 集合的属性和方法&#xff1a; 1&#xff09;size&#xff0c;返回集合的元…

应用分层(三层架构)

1、 2、它比MVC更合理&#xff0c;MVC的任务分配不太均匀&#xff0c;model处理的问题过多&#xff0c;进一步改进成三层架构更为合理 3、 4、两者共同点&#xff1a;解耦 5、高内聚低耦合 &#xff08;1&#xff09;模块内&#xff1a;关系尽量紧密 &#xff08;2&#xf…

HTTP 与 HTTPS 的区别

基本概念 HTTP&#xff08;HyperText Transfer Protocol&#xff1a;超文本传输协议&#xff09;是一种应用层协议&#xff0c;主要用于在网络上进行信息的传递&#xff0c;特别是用于Web浏览器和服务器之间的通信。 它使用明文方式发送数据&#xff0c;这意味着传输的内容可…