babel6使用ES2020最新js语法

babel6使用ES2020最新js语法
Babel 6 原本是不支持 ES2020 语法,因为它是在 Babel 7 中引入的。如果您想使用 ES2020 语法,您需要将 Babel 6 升级到 Babel 7 或更高版本(推荐),当然也可以在bebel6中安装支持某个语法的plugin,比如你想使用 ES2020 中的可选链操作符,就要配置使用
@babel/plugin-proposal-optional-chaining。
ES2020新增语法
这里只列出我们最常用,也最好用的语法
1. 可选链操作符
const obj = {};// 老语法
let second = obj && obj.first && obj.first.second;//es2020可选链语法
let second = obj?.first?.second;
2. 空位合并运算符
// 老语法
//这两种方式有个明显的弊端,它都会覆盖所有的假值,如(0, '', false),这些值可能是在某些情况下有效的输入
let c = a ? a : b // 方式1
let c = a || b // 方式2//es2020
// ??的左侧运算符求值为 undefined 或 null,才返回其右侧默认值
let c = a ?? b;
// 等价于let c = a !== undefined && a !== null ? a : b;
方式一: 升级babel7(推荐)
1. 使用Babel升级工具
不要手动升级,因为不同babel版本依赖不同的node和webpack版本,借助工具可以自动匹配对应版本.比如我项目中使用的是webpack4和node12,工具就会自动安装babel-loader8版本,不会安装最新的v9.
# 不安装,直接使用npx来执行
npx babel-upgrade --write# 或是安裝 babel-upgrade 在 global 並執行
npm i -g babel-upgrade
babel-upgrade --write
执行命令后, package.json 中移除了旧版本的依赖,自动新增了新版依赖,
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/preset-env": "^7.0.0",
- "babel-core": "^6.25.0",
- "babel-loader": "^7.1.1",
- "babel-plugin-syntax-dynamic-import": "^6.18.0",
- "babel-plugin-syntax-jsx": "^6.18.0",
- "babel-plugin-transform-class-properties": "^6.24.1",
- "babel-plugin-transform-object-rest-spread": "^6.26.0",
- "babel-plugin-transform-runtime": "^6.23.0",
+ "babel-loader": "^8.0.0",
- "babel-preset-env": "^1.6.1",
2. 删除node_modules,重新安装依赖
# 删除node_module
rm -rf node_modules
# 重新安装
npm i
3. 修改配置文件.babelrc
// 原.babelrc文件
{"presets": [["env", {"loose": true,"debug": false,"useBuiltIns": true,"targets": {"browsers": [ "ie > 8", "last 2 version", "safari >= 9" ]},"production": {"plugins": ["transform-remove-console"]}}]],"plugins": [[ "transform-runtime", {"helpers": false,"polyfill": false,"regenerator": true } ],[ "transform-class-properties", { "spec": true } ],[ "transform-object-rest-spread", { "useBuiltIns": true } ],[ "transform-vue-jsx" ],[ "syntax-dynamic-import" ]],"comments": false}// 修改后.babelrc文件(其他所有配置都不需要了)
//@babel/preset-env 预设,能根据目标环境自动决定要使用的插件和转换规则,而无需手动安装和配置单个插件
{"presets": [["@babel/preset-env"]]
}
4. 修改webpack配置文件
module: {rules: [{test: /\.vue$/,loader: 'vue-loader',options: {hotReload: !isProduction},},{test: /\.js$/,exclude: /(node_modules|bower_components)/,use: [{loader: 'babel-loader',options: {cacheDirectory: true,cacheIdentifier: 'babel-loader',//修改这个位置,原来值为'true'修改为'babel-loader'},},],}],},
方式二: 安装指定语法plugin
1. 可选链操作符
1.安装
npm i -D @babel/plugin-proposal-optional-chaining
2.配置.babelrc
{"presets": [["env"]],"plugins": [[ "transform-runtime"],[ "transform-class-properties"],[ "@babel/plugin-proposal-optional-chaining"],//配置[ "transform-object-rest-spread"],[ "transform-vue-jsx" ],[ "syntax-dynamic-import" ]],"comments": false}
2. 空位合并运算符
1.安装
npm i -D @babel/plugin-proposal-nullish-coalescing-operator
2.配置.babelrc
{"presets": [["env"]],"plugins": [[ "transform-runtime"],[ "transform-class-properties"],[ "@babel/plugin-proposal-nullish-coalescing-operator"],//配置[ "@babel/plugin-proposal-optional-chaining"],[ "transform-object-rest-spread"],[ "transform-vue-jsx" ],[ "syntax-dynamic-import" ]],"comments": false}
通过插件方式,也可以实现使用es2020中的新语法,但更建议第一种方式.
相关文章:
babel6使用ES2020最新js语法
babel6使用ES2020最新js语法 Babel 6 原本是不支持 ES2020 语法,因为它是在 Babel 7 中引入的。如果您想使用 ES2020 语法,您需要将 Babel 6 升级到 Babel 7 或更高版本(推荐),当然也可以在bebel6中安装支持某个语法的plugin,比如你想使用 ES2020 中的可…...
【iOS】简单的网络请求
应iOS小组要求,仿写知乎日报需要实现网络请求并解析JSON格式数据,这篇文章仅对基本的网络请求和iOS中的JSON解析作以记录,还涉及到RunLoop的一点小插曲,具体请求过程和原理以后会详细学习!🙏 基本网络流程简…...
Vulnhub系列靶机---mhz_cxf: c1f
靶机文档::mhz_cxf: c1f 下载地址:Download (Mirror): 网卡配置 靶机开机后按住shift,出现界面如图,按e键进入安全模式: 找到ro,删除该行后边内容,并将ro 。。。修改为:…...
SDRAM与DRAM
SDRAM(同步动态随机存取内存)和DRAM(动态随机存取内存)都是RAM的一种类型,但是它们工作的方式有所不同。 DRAM:DRAM是最基础的动态随机存取内存,它的工作方式是总线在内存中读取或写入数据的速度…...
数据库基础(一)【MySQL】
文章目录 安装 MySQL修改密码连接和退出数据库服务器使用 systemctl 管理服务器进程配置数据库从文件角度看待数据库查看连接情况 安装 MySQL 这是在 Linux 中安装 MySQL 的教程:Linux 下 MySQL 安装。本系列测试用的 MySQL 版本是 5.7,机器是 centOS7.…...
C++ -- 位运算与常用库函数(ACWING语法基础)
位运算 & 与 | 或 ~ 非 ^ 异或 >> 右移 << 左移 常用操作: 求x的第k位数字 x >> k & 1lowbit(x) x & -x,返回x的最后一位1 常用库函数、 reverse 翻转 翻转一个vector: reverse(a.begin(), a.end(…...
老卫带你学---leetcode刷题(557. 反转字符串中的单词 III)
557. 反转字符串中的单词 III 问题: 给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1:输入:s "Lets take LeetCode contest" 输出:"…...
IEEE754 标准存储浮点数
1. IEEE754 标准简介 IEEE754 标准是一种用于浮点数表示和运算的标准,由国际电工委员会(IEEE)制定。它定义了浮点数的编码格式、舍入规则以及基本的算术运算规则,旨在提供一种可移植性和一致性的方式来表示和处理浮点数 IEEE754 …...
CSS 两栏布局
目录 CSS两栏布局(左列定宽,右列自适应宽) 方法一:浮动margin 方法二:定位margin 方法三:浮动BFC 方法四:Flex布局 方法五:able布局 CSS两栏布局(左列不定宽&#…...
RHCSA常用命令总结
RHCSA回顾 1.Linux学习环境的安装部署 VMware虚拟机rhel9.x 磁盘容量:20GB cpu:1颗2核心 内存:2G 网卡:NAT 新CD/DVD设置镜像源文件 取消显示器的3d支持 (1)安装RHEL9 (2)组件:带有GUI的服务器 (3)分区…...
【Spring Boot】详解restful api
目录 1.restful api 1.1.历史 1.2.内容 1.3.传参 2.Spring Boot中的Restful Api 1.restful api 1.1.历史 RESTful API(Representational State Transferful Application Programming Interface)是一种设计风格,用于构建基于网络的应用…...
LISTAGG 函数
# LISTAGG 函数 对于查询中的每个组,LISTAGG 聚合函数根据 ORDER BY 表达式对该组的行进行排序,然后将值串联成一个字符串。 ## 语法: sql LISTAGG( [DISTINCT] aggregate_expression [, delimiter ] ) [ WITHIN GROUP (ORDER BY order_list) ] …...
485modbus转profinet网关连三菱变频器modbus通讯配置案例
本案例介绍了如何通过485modbus转profinet网关连接威纶通与三菱变频器进行modbus通讯。485modbus转profinet网关提供了可靠的连接方式,使用户能够轻松地将不同类型的设备连接到同一网络中。通过使用这种网关,用户可以有效地管理和监控设备,从…...
1024节日
程序员节日...
【@EnableWebMvc的原理】
用途 启用SpringMvc 的 Java 配置类,代替 xml 格式的配置文件。 一、查看运用(注解 EnableWebMvc ,实现 WebMvcConfigurer ) Component("com.ibicd") EnableWebMvc public class AppConfig implements WebMvcConfigu…...
css3 2d转换transform详细解析与代码实例transform
CSS3 Transform是CSS3的一个模块,其目的是为了通过对元素的变形、旋转、缩放、平移等操作,能够更加丰富的展示页面效果。下面是CSS3 Transform的详细解析与代码实例: transform属性 transform属性用于对元素进行变形操作,其属性…...
点亮现代编程语言的男人——C语言/UNIX之父Dennis Ritchie
祝各位程序员们1024程序员节快乐🎉🎉🎉 图片来自网络,侵删 前言 在程序员中,有一位人物的不被人熟知,他的贡献甚至比他自身更要出名 C语言之父,UNIX之父——Dennis MacAlistair Ritchie 一…...
找不到msvcp100.dll解决教程
在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp100.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题,本文将介绍四个修复msvcp100.dll丢失的方法,帮助读者快速恢复计算机的正常运…...
萃取和constexpr
最近重温了一下萃取发现其与constexpr有相似之处,记录如下。 一、引出萃取 STL的在中心思想是将容器和算法分开,再通过迭代器iterator这一迭代器来将两者粘合起来。 通过迭代器进行算法计算,需要涉及两个问题: 问题一.通常需要…...
决策树完成图片分类任务
数据集要求: 训练集 和 验证集 (要求分好) 图片放置规则 : 一个总文件夹 放类别名称的子文件夹 其中子文件夹 为存放同一类别图片 举个例子 分类动物 则 总文件夹名称为动物 子文件夹为 猫 狗 猪猪 。。。 其中猫的文件夹里面…...
实战应用:在快马平台用jdk1.8的Stream API快速实现订单数据统计与分析
最近在做一个电商后台的数据分析需求时,发现用Java 8的Stream API处理集合数据特别高效。正好在InsCode(快马)平台上实践了一下,分享这个模拟订单统计的实战案例。 订单类设计 首先定义了一个订单类,包含订单ID、金额、客户类型和创建日期四个…...
利用SoftEther实现跨平台虚拟私有网络部署指南
1. SoftEther简介与核心优势 如果你正在寻找一款能同时在Windows、Linux、Mac、Android和iOS上运行的虚拟私有网络解决方案,SoftEther绝对值得深入了解。这个源自日本筑波大学的开源项目,经过多年发展已经成为支持协议最全面的跨平台工具之一。我第一次…...
如何进行 SEO 网站建设的链接优化
如何进行 SEO 网站建设的链接优化 在当今的数字化时代,搜索引擎优化(SEO)无疑是任何网站建设项目中不可或缺的一部分。尤其是在百度这样的主要搜索引擎上,SEO的重要性更是不言而喻。如何进行 SEO 网站建设的链接优化呢࿱…...
小白也能玩转零售AI:Ostrakon-VL-8B快速上手,实测效果超预期
小白也能玩转零售AI:Ostrakon-VL-8B快速上手,实测效果超预期 1. 零售AI新选择:Ostrakon-VL-8B简介 1.1 什么是Ostrakon-VL-8B? Ostrakon-VL-8B是一款专为零售和餐饮行业设计的智能视觉理解系统。简单来说,它就像是一…...
KART-RERANK在.NET生态中的集成:为C#应用注入AI排序能力
KART-RERANK在.NET生态中的集成:为C#应用注入AI排序能力 你是不是也遇到过这样的场景?自己开发的C#应用里,有一个搜索或者推荐功能,用户输入关键词,系统返回一堆结果。但问题是,这些结果往往只是按照最基础…...
从安装到调优:SenseVoiceSmall语音情感识别完整使用指南
从安装到调优:SenseVoiceSmall语音情感识别完整使用指南 1. 引言:为什么选择SenseVoiceSmall? 语音识别技术已经发展到了不仅能听懂我们在说什么,还能感知我们说话时的情绪状态。SenseVoiceSmall作为阿里巴巴达摩院开源的语音理…...
Debian13安装基于apt的Nvidia闭源驱动+CUDA开发环境
Ubuntu安装NVIDIA驱动实在太容易了,直接在额外驱动里面选择就好,但Debian没有这么简单。以往我们都需要从NVIDIA官网下载.run文件,但现在其实更建议各位使用Nvidia提供的本地apt源来管理。本文只针对apt版本驱动安装过程中特定的坑和CUDA开发…...
免费文档下载终极指南:kill-doc 让您轻松获取全网文档资源
免费文档下载终极指南:kill-doc 让您轻松获取全网文档资源 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为…...
抖音下载器技术深度解析:从单视频到批量下载的完整实战指南
抖音下载器技术深度解析:从单视频到批量下载的完整实战指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...
交换机接口全解析:从RJ-45到光纤,一文掌握所有连接技巧
1. 交换机接口基础:认识常见的物理接口类型 第一次拆开交换机包装时,面对密密麻麻的接口面板,新手常会感到无从下手。其实这些接口按照传输介质可分为两大阵营:电口和光口。电口就是我们熟悉的RJ-45接口,而光口则包含…...
