ES8字符串填充用法总结:padStart(),padEnd(),rest剩余参数的用法{name,...obj},扩展运算符的用法,正则表达式命名捕获组
ES8(ECMAScript 2017)引入了两个非常有用的字符串填充方法:padStart()
和 padEnd()
,它们可以用来在字符串的两端添加指定的填充字符,从而达到指定的字符串长度。这些方法非常适合用于格式化文本和对齐输出。
1. padStart()
1.1 用法
padStart()
方法用于将当前字符串填充到指定的长度,如果当前字符串的长度已经大于或等于指定长度,则返回原字符串。填充的字符可以自定义,默认使用空格。
const str = '5';
const paddedStr = str.padStart(3, '0');
console.log(paddedStr); // "005"
语法:str.padStart(targetLength, padString)
- targetLength:最终字符串的长度。如果当前字符串长度大于或等于目标长度,返回原字符串。
- padString:可选,填充的字符。如果没有指定,默认使用空格。填充字符的长度必须小于或等于目标长度。
1.2 使用场景
padStart() 通常用于字符串的对齐,特别是在格式化数字和时间时,确保字符串的长度一致。
例子:格式化日期
const day = '7';
const paddedDay = day.padStart(2, '0');
console.log(paddedDay); // "07"
- 用于日期、时间等需要对齐的地方,确保每个部分的长度一致。
- 例子:数字对齐
const numbers = ['1', '10', '100', '1000'];
const paddedNumbers = numbers.map(num => num.padStart(4, '0'));
console.log(paddedNumbers); // ['0001', '0010', '0100', '1000']
在列出数字、对齐输出时,使用 padStart() 可以使数字在显示时更加整齐。
2. padEnd()
2.1 用法
padEnd() 方法用于将当前字符串填充到指定的长度,在字符串的末尾添加填充字符。如果当前字符串的长度已经大于或等于目标长度,则返回原字符串。
const str = '5';
const paddedStr = str.padEnd(3, '0');
console.log(paddedStr); // "500"
- 语法:str.padEnd(targetLength, padString)
- targetLength:最终字符串的长度。如果当前字符串长度大于或等于目标长度,返回原字符串。
- padString:可选,填充的字符。如果没有指定,默认使用空格。填充字符的长度必须小于或等于目标长度。
2.2 使用场景
padEnd() 方法适用于字符串的右对齐或在字符串末尾添加额外的字符,常见于表格格式化、文本显示等。
例子:格式化表格
const headers = ['Name', 'Age', 'Location'];
const paddedHeaders = headers.map(header => header.padEnd(15, ' '));
console.log(paddedHeaders);
// ["Name ", "Age ", "Location "]
用于文本输出时,确保每个字段的长度一致。
例子:数字格式化
const prices = ['5', '12', '123', '45'];
const paddedPrices = prices.map(price => price.padEnd(5, '0'));
console.log(paddedPrices); // ['50000', '12000', '12300', '45000']
对于数字的格式化,padEnd() 可以确保数字显示时具有一致的长度。
3. 总结
padStart():
作用:用于在字符串的开始处填充字符,直到字符串的长度达到指定值。
常见场景:格式化数字、对齐日期、时间等,确保字符串长度一致。
padEnd():
作用:用于在字符串的末尾填充字符,直到字符串的长度达到指定值。
常见场景:文本输出格式化、表格对齐、字符串显示等。
例子:填充固定长度的电话号码
const phone = '123';
const paddedPhone = phone.padStart(10, '0');
console.log(paddedPhone); // "0000000123"
使用 padStart() 来补充固定长度的电话号码,确保输出一致。
通过 padStart() 和 padEnd(),可以轻松实现字符串的对齐、格式化和填充,大大提高了处理字符串时的便利性。
ES9(ECMAScript 2018)引入了多个有用的特性,其中 剩余参数(rest)、扩展运算符(spread) 和 正则表达式命名捕获组 是非常实用的功能,能够帮助开发者更高效地编写代码。以下是这些特性的详细用法总结。
4. 剩余参数(Rest Parameters)
4.1 用法
剩余参数(rest parameters)使得函数能够接收不定数量的参数,并将它们作为一个数组传递到函数内部。它使用语法 ...
来表示剩余参数,并且它必须是函数参数列表中的最后一个参数。
function sum(...args) {return args.reduce((acc, curr) => acc + curr, 0);
}console.log(sum(1, 2, 3, 4)); // 10
- 语法:…parameterName
- parameterName 是一个数组,它包含了所有传递给函数的参数(从 … 后面开始的所有参数)。
4.2 使用场景
剩余参数可以用于函数参数不确定的场景,特别是当我们不确定函数会接收到多少个参数时。它提供了一种更简洁的方式来处理多个参数。
例子:合并数组
function mergeArrays(...arrays) {return arrays.flat();
}const result = mergeArrays([1, 2], [3, 4], [5, 6]);
console.log(result); // [1, 2, 3, 4, 5, 6]
- 在这个例子中,…arrays 用来接收多个数组参数并将它们合并。
- 例子:提取对象属性
const person = { name: 'Alice', age: 30, job: 'Engineer' };function displayPersonInfo({ name, ...rest }) {console.log(`Name: ${name}`);console.log('Other info:', rest);
}displayPersonInfo(person);
// Output:
// Name: Alice
// Other info: { age: 30, job: 'Engineer' }
- 在这里,…rest 捕获了除了 name 之外的所有属性。
5. 扩展运算符(Spread Operator)
5.1 用法
扩展运算符(spread operator)使用语法 … 来将一个数组或对象展开成独立的元素或属性。这与剩余参数类似,但其主要作用是“展开”而不是“收集”。
const arr = [1, 2, 3];
const newArr = [...arr, 4, 5];
console.log(newArr); // [1, 2, 3, 4, 5]
- 语法:…array 或 …object
- … 作用是将数组或对象中的元素(或属性)展开。
5.2 使用场景
扩展运算符主要用于数组和对象的合并、复制、修改等操作。
例子:合并数组
const arr1 = [1, 2];
const arr2 = [3, 4];
const combined = [...arr1, ...arr2];
console.log(combined); // [1, 2, 3, 4]
- 扩展运算符可以轻松地将多个数组合并。
- 例子:复制数组
const arr = [1, 2, 3];
const copyArr = [...arr];
console.log(copyArr); // [1, 2, 3]
- 使用扩展运算符可以快速创建数组的浅拷贝。
- 例子:复制对象
js
const person = { name: 'Alice', age: 30 };
const updatedPerson = { ...person, job: 'Engineer' };
console.log(updatedPerson); // { name: 'Alice', age: 30, job: 'Engineer' }
- 扩展运算符也可以用来复制对象,并在复制的同时添加或更新属性。
6. 正则表达式命名捕获组(Named Capture Groups)
6.1 用法
ES9 引入了正则表达式的命名捕获组,允许通过名称来引用正则表达式中的捕获组。以前我们只能通过索引来引用捕获组,而现在可以使用 ?P 来命名捕获组,使代码更具可读性和可维护性。
const regex = /(?P<firstName>\w+) (?P<lastName>\w+)/;
const match = regex.exec('John Doe');
console.log(match.groups.firstName); // "John"
console.log(match.groups.lastName); // "Doe"
- 语法:(?Ppattern)
- name 是捕获组的名称。
- pattern 是正则表达式模式,表示捕获的内容。
6.2 使用场景
命名捕获组使得复杂的正则表达式更加易读,特别是在处理多个捕获组时,使用名称而非数字索引来引用捕获的部分,可以提高代码的可读性和可维护性。
- 例子:提取日期中的年、月、日
const regex = /(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})/;
const match = regex.exec('2023-02-17');
console.log(match.groups.year); // "2023"
console.log(match.groups.month); // "02"
console.log(match.groups.day); // "17"
- 使用命名捕获组,能够清晰地知道哪个组对应的是年份、月份和日期。
- 例子:提取 URL 的协议和域名
const regex = /(?P<protocol>\w+):\/\/(?P<domain>[\w.-]+)/;
const url = 'https://www.example.com';
const match = regex.exec(url);
console.log(match.groups.protocol); // "https"
console.log(match.groups.domain); // "www.example.com"
- 命名捕获组使得我们可以直观地访问正则表达式中匹配的各部分内容,而无需记住每个捕获组的索引。
7. 总结
- 剩余参数(Rest Parameters)
- 用途:将不定数量的参数收集到一个数组中,简化函数的参数处理。
- 场景:处理不定数量的参数、提取对象属性等。
- 扩展运算符(Spread Operator)
- 用途:将数组或对象展开成独立的元素或属性。
- 场景:数组合并、复制对象、快速扩展和修改对象/数组。
- 正则表达式命名捕获组(Named Capture Groups)
- 用途:通过命名捕获组,使正则表达式的捕获组更加具可读性和可维护性。
- 场景:提取复杂的匹配数据,增加代码可读性。
这些 ES9 的特性使得 JavaScript 编程更加简洁、灵活,并且提高了代码的可维护性,特别是在处理不定数量参数、合并数据、提取复杂数据时,能够显著减少代码的复杂度。
相关文章:
ES8字符串填充用法总结:padStart(),padEnd(),rest剩余参数的用法{name,...obj},扩展运算符的用法,正则表达式命名捕获组
ES8(ECMAScript 2017)引入了两个非常有用的字符串填充方法:padStart() 和 padEnd(),它们可以用来在字符串的两端添加指定的填充字符,从而达到指定的字符串长度。这些方法非常适合用于格式化文本和对齐输出。 1. padSt…...
Redis 统计每个数据类型中占用内存最多的前 N 个 bigkey
Redis 统计每个数据类型中占用内存最多的前 N 个 bigkey import redisdef find_bigkeys(hostlocalhost, port6379, db0, n10):r redis.Redis(hosthost, portport, db0)bigkeys {}# 用于存储每种数据类型的键及内存占用type_memory_dict {}# 扫描所有键for key in r.scan_it…...
C++中的.*运算符
看运算符重载的时候,看到这一句 .* :: sizeof ?: . 注意以上5个运算符不能重载。 :: sizeof ?: . 这四个好理解,毕竟都学过,但.*是什么? 于是自己整理了一下 .* 是一种 C 中的运算符,称为指针到成…...
大语言模型简史:从Transformer(2017)到DeepSeek-R1(2025)的进化之路
2025年初,中国推出了具有开创性且高性价比的「大型语言模型」(Large Language Model — LLM)DeepSeek-R1,引发了AI的巨大变革。本文回顾了LLM的发展历程,起点是2017年革命性的Transformer架构,该架构通过「…...
14-H指数
给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发…...
Param ‘serviceName‘ is illegal, serviceName is blank
今天测试nacos服务配置拉取时报了这样一个错误,发现是spring.application.name空值造成的,但是我的bootstrap.yml文件明明配置了,难不成是没有加载bootstrap.yml文件?于是我引入了下面的依赖 <dependency><groupId>o…...
深入剖析Spring MVC
一、Spring MVC 概述 1. 什么是 Spring MVC? Spring MVC 是基于 Spring 框架的 Web 框架,它实现了 MVC 设计模式,将应用程序分为三个核心部分: Model:封装应用程序的数据和业务逻辑。 View:负责渲染数据…...
LLM:RAG
原文链接:LLM:RAG 1、RAG 概览 RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合了信息检索(IR)和 LLM 的技术。它的核心思想是在 LLM 生成回答之前,通过检索相关文档…...
Linux 信号量
Linux 信号量 一、信号量基础概念1.1 同步机制的核心需求1.2 信号量的核心原理1.3 信号量类型对比 二、实战代码解析2.1 共享内存与信号量结合示例2.2 信号量类实现要点 三、关键实现细节分析3.1 初始化三步骤3.2 SEM_UNDO机制3.3 原子操作保证 四、进阶应用场景4.1 生产者-消费…...
如何优化Spark作业的性能
优化Spark作业的性能是一个综合性的任务,涉及多个方面的调整和优化。以下是一些关键的优化策略: 一、开发调优 避免创建重复的RDD: 对于同一份数据,只应该创建一个RDD,避免多次创建RDD来增加性能开销。在对不同的数据…...
ERP对制造业务有何价值?
ERP 的定义 在定义 ERP 之前,我们先从其首字母缩写说起,ERP 代表企业资源规划。我们可以将 ERP 定义为一种企业软件,它帮助组织管理日常业务。从根本上讲,ERP 将客户管理、人力资源、商业智能、财务管理、库存以及供应链功能整合…...
python和pycharm 和Anaconda的关系
好的,下面我会详细说明 Python、PyCharm 和 Anaconda 三者的关系,并逐一解释它们的功能和作用。 1. Python(编程语言) 定义:Python 是一种高级编程语言,设计简洁,易于学习,且功能强…...
网络安全“挂图作战“及其场景
文章目录 一、网络安全挂图作战来源与定义1、网络安全挂图作战的来源2、网络安全挂图作战的定义 二、挂图作战关键技术三、挂图作战与传统态势感知的差异四、挂图作战主要场景五、未来趋势结语 一、网络安全挂图作战来源与定义 1、网络安全挂图作战的来源 网络安全挂图作战的…...
【对比】Pandas 和 Polars 的区别
Pandas vs Polars 对比表 特性PandasPolars开发语言Python(Cython 实现核心部分)Rust(高性能系统编程语言)性能较慢,尤其在大数据集上(内存占用高,计算效率低)极快,利用…...
投资组合风险管理
投资组合风险管理 市场风险 信用风险流动性风险风险指标收益率波动率最大回撤 α \alpha α(詹森指数), β \beta β卡玛比率月胜率上/下行捕获比夏普比率索提诺比率经风险调整的收益率(𝑀2)特雷诺比率信息…...
用 WOW.js 和 animate.css 实现动画效果
用 wow.js 就可以实现动画效果,但由于里面的动画样式太少,一般还会引入 animated.css 第一步:下载 选择合适的包管理器下载对应的内容 pnpm i wow.js animated.css --save 第二步:引入 在main.js中加入: import …...
2024年职高单招或高考计算机类投档线
问题: 这些学校2024年职高单招或高考计算机类投档线分别是多少 回答: 部分学校2024年职高单招或高考计算机类投档线如下: 湖南工业职业技术学院 职高单招:未查询到2024年职高单招计算机类专业明确的录取分数线信息。但在2024年…...
洛谷P11042 [蓝桥杯 2024 省 Java B] 类斐波那契循环数
像是这种填空题的话,就直接暴力还更加省时间,在本地算完后直接提交答案即可 #include<bits/stdc.h> using namespace std;const int N 10000000;bool isnumber(int n) {vector<int> a;int m n;while (n > 0) {a.push_back(n % 10);n / …...
[LeetCode]day25 151.翻转字符串里的单词
题目链接 题目链接 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能…...
2026考研趋势深度解析:政策变化+高效工具指南
2026考研深度解析:趋势洞察高效工具指南,助你科学备战上岸 从政策变化到工具实战,这份千字攻略解决99%考生的核心焦虑 【热点引入:考研赛道进入“高难度模式”】 2025年全国硕士研究生报名人数突破520万,报录比预计扩…...
【软考】【2025年系统分析师拿证之路】【啃书】第十一章 软件需求工程(十二)
目录 需求的层次需求工程的主要活动需求的记录技术需求分析需求定义 需求的层次 业务需求用户需求系统需求 需求工程的主要活动 需求获取需求分析形成需求规格需求确认和验证需求管理 需求的记录技术 任务卡片场景说明用户故事 需求分析 方法: 结构化分析&a…...
Cherry Studio 接入本地ollama 搭建可视化deepseek
本文介绍本地下载ollama 后,在cherry studio 中添加本地ollama 查看本地deepseek 模型列表 ollama list 运行模型 ollama run deepseek-r1 验证可以选用ollama 模型...
MapReduce远程调试
个人博客地址:MapReduce远程调试 | 一张假钞的真实世界 MR的远程调试分为两个方面: MapReduce Task远程调试AM(Application Master)远程调试MapReduce Task远程调试 Map Task远程调试 修改mapred-site.xml中的配置项: mapreduce.map.java.opts:Map Task JVM参数设置。…...
知识拓展:设计模式之装饰器模式
装饰器模式拓展 1. 什么是装饰器模式? 装饰器模式(Decorator Pattern)是一种结构型设计模式,允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰器模式通过创建一个装饰类来包装原始类,从而在不修…...
【深度学习】计算机视觉(CV)-目标检测-DETR(DEtection TRansformer)—— 基于 Transformer 的端到端目标检测
1.什么是 DETR? DETR(DEtection TRansformer) 是 Facebook AI(FAIR)于 2020 年提出的 端到端目标检测算法,它基于 Transformer 架构,消除了 Faster R-CNN、YOLO 等方法中的 候选框(…...
C++ Primer 访问控制与封装
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
LSTM细胞状态门控设计详解:数学原理、代码实现与工业级优化方案
一、数学原理深度解析 1.1 细胞状态更新方程 LSTM通过三个门控机制精确控制细胞状态: 遗忘门:f_t σ(W_f[h_{t-1}, x_t] b_f)输入门: i_t σ(W_i[h_{t-1}, x_t] b_i) C̃_t tanh(W_C[h_{t-1}, x_t] b_C)状态更新:C_t f_…...
hive(hdfs)补数脚本
pb级别迁移通常要持续1个月以上。一般的过程是,全量迁移,追平数据,增量同步,校验,补数。 这里的指定补数脚本: 输入需要补数的表,如Input.txt,如果有分区则加补此分区,没…...
Python学习心得函数
一、函数的定义及调用 1.函数的定义: 函数的定义:函数是将一段能实现某种特定功能的代码,使用函数名进行封装,并通过函数名称进行调用。从而达到一次编写,多次调用的目的。 2.函数类型分为两类: &#…...
RabbitMQ服务异步通信
消息队列在使用过程中,面临着很多实际问题需要思考: 1. 消息可靠性 消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生…...
适用于 Windows 仅 0.6MB 且免费无广告的绿色截图工具
软件介绍 YasoCut 可是一款源自 GitHub 的宝藏截图软件,专为 Windows 系统打造,亮点十足。它体积超小,仅有 0.6MB,并且简单易用、免费无广告,还贴心地提供了绿色版本。 这款软件的独特之处在于,和常见截图…...
three.js+WebGL踩坑经验合集(8.2):z-fighting叠面问题和camera.near的坑爹关系
本篇延续上篇内容: three.jsWebGL踩坑经验合集(8.1):用于解决z-fighting叠面问题的polygonOffset远没我们想象中那么简单-CSDN博客 笔者在上篇提到,叠面的效果除了受polygonOffset影响以外,还跟相机的近裁剪面camera.near密切相关ÿ…...
[LeetCode力扣hot100]-链表
相交链表 160. 相交链表 - 力扣(LeetCode) 思路就是遍历两个链表,有相同的部分就可以视为相交。 但是长度不一样,比如两个会相交的链表,headA 的长度为 a c,headB 的长度为 b c,其中 c 是公…...
Deepseek官方整理的13类提示词推荐
最近 deepseek 实在是太火了,网上出现了各种大神教你怎么用好它的免费教程,当然也还有各种需要付费才教你怎么用提示词的课程。但我觉得对于使用 AI 来说,根本就不需要教,关键是要理解一条和 AI 沟通的核心原则:和人交…...
hystrix超详细教学
1、什么是hystrix? 是一个做熔断的框架,当程序被高并发访问时可能会造成微服务的宕机,hystrix可以熔断微服务之间通信。防止后台服务发生雪崩。 2、Hystrix作用 熔断查看微服务请求状态 3、Hystrix使用场景 是在微服务架构下才有意义&am…...
Linux的基础指令和环境部署,项目部署实战(下)
目录 上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客 1. 搭建Java部署环境 1.1 apt apt常用命令 列出所有的软件包 更新软件包数据库 安装软件包 移除软件包 1.2 JDK 1.2.1. 更新 1.2.2. 安装openjdk&am…...
250217-数据结构
1. 定义 数据结构是数据的存储结构,即数据是按某些结构来存储的,比如线性结构,比如树状结构等。 2. 学习意义 数据结构是服务于算法的,为了实现算法的高效计算,所以将数据按特定结构存储。比如使用快速插入或删除的…...
【Java基础】Java数组
前言 在Java编程中,数组是一种非常基础且重要的数据结构。无论你是新手还是有经验的开发者,理解如何有效地使用数组对于编写高效和可维护的代码至关重要。 数组的静态初始化 静态初始化是指在声明数组的同时为其元素赋值。这种方式非常适合于你已经知…...
【拥抱AI】GPT Researcher如何自定义配置LLM
GPT Researcher默认的 LLM(大型语言模型)和嵌入式模型是 OpenAI,因为其卓越的性能和速度。不过,GPT Researcher 支持各种开源和闭源的 LLM 和嵌入式模型,你可以通过更新 SMART_LLM、FAST_LLM 和 EMBEDDING 环境变量轻松…...
网工项目理论1.7 设备选型
本专栏持续更新,整一个专栏为一个大型复杂网络工程项目。阅读本文章之前务必先看《本专栏必读》。 一.交换机选型要点 制式:盒式交换机/框式交换机。功能:二层交换机/三层交换机。端口密度:每交换机可以提供的端口数量。端口速率:百兆/千兆/万兆。交换容量:交换矩阵…...
扩散模型中的马尔可夫链设计演进:从DDPM到Stable Diffusion全解析
一、技术原理与数学推导(附核心公式) 1.1 扩散过程数学建模 马尔可夫链前向过程定义: q(x_{1:T}|x_0) \prod_{t1}^T q(x_t|x_{t-1})噪声调度函数(以余弦调度为例): \beta_t \frac{1 - \cos(\pi t/T)}…...
游戏引擎学习第112天
黑板:优化 今天的内容是关于优化的,主要讨论了如何在开发中提高代码的效率,尤其是当游戏的帧率出现问题时。优化并不总是要将代码做到最快,而是要确保代码足够高效,以避免性能问题。优化的过程是一个反复迭代的过程&a…...
国鑫DeepSeek 671B本地部署方案:以高精度、高性价比重塑AI推理新标杆
随着DeepSeek大模型应用火爆全球,官方服务器总是被挤爆。而且基于企业对数据安全、网络、算力的更高需求,模型本地化部署的需求日益增长,如何在有限预算内实现高效、精准的AI推理能力,成为众多企业的核心诉求。国鑫作为深耕AI领域…...
【YOLOv8】
文章目录 1、yolov8 介绍2、创新点3、模型结构设计3.1、backbone3.2、head 4、正负样本匹配策略5、Loss6、Data Augmentation7、训练、推理8、分割 Demo附录——V1~V8附录——相关应用参考 1、yolov8 介绍 YOLOv8 是 ultralytics 公司在 2023 年 1 月 10 号开源的 YOLOv5 的下…...
Android - Handler使用post之后,Runnable没有执行
问题:子线程创建的Handler。如果 post 之后,在Handler.removeCallbacks(run)移除了,下次再使用Handler.postDelayed(Runnable)接口或者使用post时,Runnable是没有执行。导致没有收到消息。 解决办法:只有主线程创建的…...
深入解析 Flutter 性能优化:从原理到实践
深入解析 Flutter 性能优化:从原理到实践的全面指南 Flutter 是一个高性能的跨平台框架,但在开发复杂应用时,性能问题仍然可能出现。性能优化是开发高质量 Flutter 应用的关键。本篇博客将从 Flutter 的渲染原理出发,结合实际场景…...
springcloud的组件及作用
Spring Cloud是一个用于构建分布式系统的工具集,它提供了一系列组件来简化微服务架构的开发和部署。以下是一些关键的Spring Cloud组件及其作用: 1. 服务注册与发现 Eureka:Eureka是Spring Cloud中的核心组件之一,用于实现服务注…...
认识Vue3
目录 1. Vue3的优势 2. Vue2 选项式 API vs Vue3 组合式API 使用create-vue搭建Vue3项目 1. 认识create-vue 2. 使用create-vue创建Vue3项目 熟悉Vue3项目目录和关键文件 组合式API - setup选项 1. setup选项的写法和执行时机 2. setup中写代码的特点 组合式API - re…...
Node.js 中的 Event 模块详解
Node.js 中的 Event 模块是实现事件驱动编程的核心模块。它基于观察者模式,允许对象(称为“事件发射器”)发布事件,而其他对象(称为“事件监听器”)可以订阅并响应这些事件。这种模式非常适合处理异步操作和…...
【JavaEE进阶】MyBatis通过注解实现增删改查
目录 🍃前言 🍀打印日志 🌴传递参数 🎋增(Insert) 🚩返回主键 🎄删(Delete) 🌲改(Update) 🌳查(Select) 🚩起别名 🚩结果映射 🚩开启驼…...