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

本文介绍了Babel编译器的核心模块@babel/core的功能,包括词法分析和语法转换。同时讲解了如何使用@babel/polyfill处理ES6+特性兼容问题,以及如何通过preset-env智能预设来配置编译过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值