bable 【实用教程】

news2024/12/24 7:25:37

简介

bable 用于将 ES6 的语法编译为 ES5

  • 只关心语法,不关心 API 是否正确。
  • 不处理模块化(webpack 会处理)

搭建开发环境

  1. 安装相关的包
npm i @babel/cli @babel/core @babel/preset-env
  1. 新建文件 .babelrc,内容为
{ 
    "presets": [
        [
            "@babel/preset-env"
        ]
    ],
    "plugins": [
    ]
}
  • presets 内为预设的 plugins 的集合
    • 编译 jsx,用 @bakel/preset-react
    • 编译 TS,用 @babel/preset-typescript
  • bable 本身是个空壳,所有的编译是通过一个个 plugins 实现的

执行编译

npx babel src/index.js

babel-polyfill

babel-polyfill 是 core-js 和 regenerator 的集合。

  • core-js 除了不支持生成器语法,其他都能编译
  • regenerator 可编译生成器语法,弥补了 core-js 的不足

注意事项:
Babel 7.4之后弃用了 babel-polyfil,推荐直接使用 core-js和 regenerator,但面试中还是可能考察。

按需引入的配置方法

按需引入:只引入代码中使用的部分,其他部分不引入,可减少最终打包的体积。

.babelrc

"presets": [
    [
        "@babel/preset-env",
        {
            "useBuiltIns": "usage",
            // corejs 的最新版本号
            "corejs": 3
        }
    ]
],

Babel 7.4之后弃用了 babel-polyfil,但也是按此方式配置,因为它直接用的 corejs ,没有用到 babel-polyfil

存在的问题

会污染全局环境,因为其实现方式是:

在这里插入图片描述

可能会覆盖用户的定义。

babel-runtime

用于解决 babel-polyfil 污染全局环境的问题。

仅自己开发的系统,可以不使用 babel-runtime ,但若是开发第三方库,则一定要用 babel-runtime

实现原理

使用 _promise ,_includes 等自定义名称的方式,避免和用户的定义冲突。

配置方法

  1. 安装 @babel/plugin-transform-runtime 在 devDependencies 中
  2. 安装 @babel/runtime 在 dependencies 中
  3. .babelrc 的 plugins 中添加
    "plugins": [
        [
            "@babel/plugin-transform-runtime",
            {
                "absoluteRuntime": false,
                "corejs": 3,
                "helpers": true,
                "regenerator": true,
                "useESModules": false
            }
        ]
    ]

通常按此官方配置即可。

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

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

相关文章

探秘分布式一致性(共识)算法 :Raft

1.前言 Raft 算法是 Multi-Paxos 算法的一种,是一种强一致性算法。核心就是通过日志复制的方式达到整个集群的副本一致。 Raft 算法的三个核心概念就是 Leader 的选举、日志复制、节点变更。本文也将从这三个方面进行探讨。之后再聊聊 Raft 算法的几个应用场景。 2.…

Docker(七)-Docker容器数据卷

1.容器数据卷是什么 卷就是目录或者文件,存在于一个或者多个容器中,由docker挂载到容器,不属于容器内(类似于笔记本电脑外的一个移动硬盘)。 卷的设计目的就是数据持久化,完全独立于容器的生存周期,因此Docker不会在容…

java基于ssm+jsp 师生交流平台

1 管理员登录 管理员输入个人的账号、密码登录系统,这时候系统的数据库就会在进行查找相关的信息,如果我们输入的账号、密码不正确,数据库就会提示出错误的信息提示,同时会提示管理员重新输入自己的账号、密码,直到账…

css3新增了选择器,还有人不知道吗?

伪元素选择器 示例 结语 前言 CSS3给我们新增了选择器,可以更加便捷,更加自由的选择目标元素,你还不知道吗? 属性选择器 属性选择器可以根据元素特定属性的来选择元素。这样就可以不用借助于类或者 id 选择器。 | 选择符 | …

.tar格式软核文件如何在Xplorer的安装

.tar格式软核文件如何在Xplorer的安装 一,简介二,官方软核安装指导三,.tar和.tgz格式文件转换四,总结 一,简介 本文主要介绍.tar格式的软核文件如何在Xplorer中进行安装,供参考。 二,官方软核…

惠普Hp激光打印机Laser MFP 1136w驱动下载,驱动安装过程中显示‘参数无效’解决办法,打开Print Spooler

Hp Laser MFP 1136w打印机驱动下载官网: https://support.hp.com/cn-zh/drivers/hp-laser-mfp-1000-printer-series/model/2101513884 官网上显示有固件和驱动程序,固件不管,选择驱动程序中的全功能解决方案,进行下载安装 在安装…

【办公技巧】Excel选项按钮,如何设置?

excel表格制作时可能会,需要用到勾选、选中的选项按钮,那么这个该如何设置?今天我们一起学习一下设置方法。 首先,我们需要先在excel工具栏中添加一个功能模块:开发工具 依次点击excel中的文件 – 选项 – 自定义功能…

【问chatgpt】

这采用的是什么脚手架初始化的?这样问询chatgpt 从文件结构来看,这个项目很可能是使用 Express 框架初始化的。这些文件夹和命名约定常见于 Express 项目结构,特别是: controllers: 控制器文件夹,通常用于处理请求逻…

【服务器02】之【阿里云平台】

百度一下阿里云官网 点击注册直接使用支付宝注册可以跳过认证 成功登录后,点击产品 点击免费试用 点击勾选 选一个距离最近的 点满GB 注意:一般试用的时用的是【阿里云】,真正做项目时用的是【腾讯云】 现在开始学习使用: 首先…

域名被劫持怎么办

域名劫持是指黑客通过篡改域名解析的过程,将原本属于某个域名的IP地址指向其它恶意网站或服务器的行为。这种攻击方式常用于网络钓鱼、广告投放等非法活动。 定义 域名劫持就是在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查…

去人声留伴奏免费软件?消除人声,分离伴奏!9款应用!

在音频/歌曲/音乐处理领域,去人声留伴奏的技术需求日益增加,无论是音乐爱好者、视频制作者还是专业音频编辑师,都希望能够找到一款高效且免费的去人声分离伴奏软件来完成这一任务。今天,我们就来详细介绍和分析9款手机与电脑上的去…

ubuntu 编译交叉环境arm 版本的openssl库

一,下载源码 [ Old Releases ] - /source/old/index.html 二,设置交叉编译环境 我的交叉环境是RV1126开发板,/home/rpdzkj/development/cross-compile-tools/rv1126/ 对应的是我电脑里的RV1126开发板的交叉环境下的gc g等路径存放 设置环境…

A Data Set of Synthetic Utterances for Computational Personality Analysis

可计算人格分析的综合话语数据集 A Data Set of Synthetic Utterances for Computational Personality Analysis 可计算人格分析的综合话语数据集摘要1 背景和总结2 方法2.1 生成角色2.2 生成数据集 3 数据记录4 技术验证4.1 人类专家的验证4.2 通过计算工具验证话语4.3 通过机…

项目管理软件如何帮助收尾项目?

项目规划、执行、监测和控制通常是项目管理的重点。即使是项目启动也会受到关注,但项目收尾通常是事后才提及的。 实际上,项目的每个阶段都很重要。项目收尾不仅仅是按时交付、不超预算和达到预期质量。 什么是项目收尾? 项目收尾是项目生…

力扣每日一题 下一个更大元素 II 单调栈 循环数组

Problem: 503. 下一个更大元素 II 思路 &#x1f468;‍&#x1f3eb; 参考题解 Code class Solution {public int[] nextGreaterElements(int[] nums) {int n nums.length;int[] res new int[n];Arrays.fill(res,-1);Stack<Integer> stack new Stack<>();//…

数据库讲解---(数据库设计)

目录 一.数据库设计概述 1.1数据库设计的内容 1.1.1数据库的结构设计 1.1.2数据库的行为设计 1.2数据库设计方法 1.2.1直观设计法 1.2.2规范设计法 1.2.3计算机辅助设计法 1.2.4自动化设计法 1.3数据库设计的基本步骤 1.3.1需求分析 1.3.2概念结构设计 1.3.3逻辑结…

python基于Selenium的web自动化框架

1 什么是selenium Selenium 是一个基于浏览器的自动化工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid&#xff1a; Selenium IDE&#xff1a;Firefox的一个…

电脑显示msvcp110.dll丢失的修复方法,快速解决msvcp110.dll的5种方法

今天&#xff0c;我想与大家分享一个我在技术支持领域遇到的一个常见问题&#xff0c;以及我如何解决它的经验。这个问题是关于“msvcp110.dll丢失”的修复方法。 一&#xff0c;了解msvcp110.dll是什么 msvcp110.dll 是一个动态链接库文件&#xff0c;它是 Microsoft Visual …

CSRF代码审计

1 CSRF漏洞 1.1 漏洞原理 跨站请求伪造&#xff08;Cross-site request forgery&#xff09;CSRF&#xff0c;是一种使已登录用户在不知情的情况下执行某种动作的攻击。因为攻击者看不到伪造请求的响应结果&#xff0c;所以CSRF攻击主要用来执行动作&#xff0c;而非窃取用户…

Go 在结构体中定义下划线(_)字段原来还有这个特殊用途?

作者&#xff1a;陈明勇 个人网站&#xff1a;https://chenmingyong.cn 文章持续更新&#xff0c;如果本文能让您有所收获&#xff0c;欢迎点赞收藏加关注本号。 微信阅读可搜《程序员陈明勇》。 这篇文章已被收录于 GitHub https://github.com/chenmingyong0423/blog&#xff…