Vue2 VS Vue3

vue3

是的,Vue 3 确实取消了基于 JavaScript 原型的 Vue 和 VueComponent 构造函数(即你提到的 vm 和 vc),取而代之的是一种完全不同的、基于普通对象和代理(Proxy)的实例管理方式。

这是一个颠覆性的改变,它带来了更好的性能、更小的包体积和更灵活的 API 设计。

在这里插入图片描述

原生DOM事件 自定义事件
# ==============  vue2 中  ==============
1. 原生DOM事件 放在在元素 是原生DOM事件 比如 <button @click='hander' />
2. 原生DOM事件 放在组件上 需要通过.native修饰符 变为原生DOM事件,否则是自定义事件 比如 <MyComponet @click.native='hander' />
<template><!-- 监听组件根元素的原生 click 事件 --><MyButton @click.native="handleNativeClick" /><!-- 监听子组件的自定义事件 --><MyButton @my-click="handleCustomClick" />
</template>通过this.$emit(事件类型,参数)  触发
通过this.$off('事件类型')  解绑# ==============  vue3 中  ==============
1. 原生DOM事件(单击、双击等),无论放在元素,还是 组件   ,都是原生DOM事件//  在子组件中  <script setup>中
通过defineEmits 编译器宏来获取   // 声明事件
let emit = defineEmits(['事件类型'])
emit('事件类型',..args)// 3.3+:另一种更简洁的语法
//来指定事件的类型和参数,这有助于提高代码的可维护性和类型安全性
const emit = defineEmits<{change: [id: number] // 具名元组语法update: [value: string]
}>()<template><!-- 因为 'click' 不是声明的自定义事件,所以会作为原生事件加到根元素上 --><MyButton @click="handleNativeClick" /><!-- 'my-click' 是声明的自定义事件,所以由子组件 emit 触发 --><MyButton @my-click="handleCustomClick" />
</template>
<script setup>
let emit = defineEmits(['my-click']); // 声明后,@click 就是自定义事件 
</script>

在这里插入图片描述
在这里插入图片描述

vue2 全局事件总线 vue3 mitt 》》兄弟间组件、任意组件之间通信

vue2 全局事件总线

在这里插入图片描述

//1、安装 mitt 是第三方的 npm i mitt 
//2、创建 事件总线
// 文件位置:src/utils/eventBus.js
// 导入 mitt
import mitt from 'mitt';// 创建 mitt 实例
const emitter = mitt();// 导出该实例,以便在其它组件中使用
export default emitter;

》》发送方

<template><button @click="sendMessage">发送消息给 ComponentB</button>
</template><script setup>
// 导入我们创建的事件总线实例
import emitter from '@/utils/eventBus';const sendMessage = () => {// 使用 emit 触发一个名为 'message-from-a' 的事件,并附带数据emitter.emit('message-from-a', {text: '你好,这是来自 ComponentA 的消息!',timestamp: new Date()});console.log('消息已发送!');
};
</script>

》》接收方

<template><div><h3>收到消息:</h3><p v-if="receivedMessage">{{ receivedMessage }}</p></div>
</template><script setup>
import { ref, onMounted, onUnmounted } from 'vue';
// 导入事件总线
import emitter from '@/utils/eventBus';const receivedMessage = ref(null);// 定义处理事件的函数
const handleMessage = (data) => {receivedMessage.value = `${data.text} (发送时间: ${data.timestamp.toLocaleTimeString()})`;
};// 在组件挂载时开始监听事件
onMounted(() => {emitter.on('message-from-a', handleMessage);
});// !!! 非常重要:在组件卸载时移除监听器,防止内存泄漏
onUnmounted(() => {emitter.off('message-from-a', handleMessage);
});
</script>

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

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

相关文章

Vue3入门到实战,最新版vue3+TypeScript前端开发教程,Vue3简介,笔记02

笔记02 一、Vue3简介 1.1、Vue3发布日期&#xff1a; 2020年9月18日 1.2、Vue3做了哪些升级&#xff1a; 1.2.1、性能的提升 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 打包大小减少41%初次渲染快55%更新渲染快133%内容减少54% 1.2.2、源码的优化…

.net core webapi/mvc阿里云服务器部署 - 错误解决

错误及解决方案缺少web.config配置HTTP 错误 500.19 - Internal Server Error检查 IIS 配置1. 确保 .NET Core Hosting Bundle 已安装2. 检查 应用程序池 配置3. 检查 IIS MIME 类型检查文件权限1. 确保 IIS 用户 有权限访问网站目录2. 检查 web.config 文件权限启用详细错误日…

多输入(input)多输出(output)验证

#作者&#xff1a;程宏斌 文章目录前言Flb 1.9.4 INCLUDE配置测试测试方案测试配置文件测试命令Flb 3.0.2 INCLUDE配置测试测试方案测试配置文件启动命令结论结论一&#xff1a;结论二&#xff1a;前言 需要设计并执行一组测试用例&#xff0c;这些测试用例将包括以子文件形式…

行业学习【电商】:垂直电商如何理解?以专业宠物平台为例

声明&#xff1a;以下部分内容含AI生成 “宠物等爱好者的专业平台”指的是垂直电商的一个具体例子。 “垂直电商” 就是指不卖所有东西&#xff0c;只深耕某一个特定领域&#xff08;即“垂直”领域&#xff09;的电商平台。 “宠物爱好者的专业平台”就是这样一个专门为养宠…

GPT(Generative Pre-trained Transformer)模型架构与损失函数介绍

目录 一、核心架构&#xff1a;Transformer Decoder 1. 核心组件&#xff1a;仅解码器&#xff08;Decoder-Only&#xff09;的堆叠 2. 输入表示&#xff1a;Token 位置 3. 输出 二、训练过程&#xff1a;两阶段范式 阶段一&#xff1a;预训练&#xff08;Pre-training&…

GitHub 热榜项目 - 日榜(2025-09-10)

GitHub 热榜项目 - 日榜(2025-09-10) 生成于&#xff1a;2025-09-10 统计摘要 共发现热门项目&#xff1a;15 个 榜单类型&#xff1a;日榜 本期热点趋势总结 本期GitHub热榜呈现三大技术热点&#xff1a;LLM智能体应用爆发&#xff08;如parlant、AutoAgent&#xff09;&a…

论文阅读:arxiv 2023 Large Language Models are Not Stable Recommender Systems

总目录 大模型相关研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 https://arxiv.org/pdf/2312.15746 速览 破解大语言模型在推荐系统中的不稳定性 该论文聚焦于大语言模型&#xff08;LLMs&#xff09;在推荐系统中的应用问题&#xff0c;指出…

Linux的使用——FinalShell下载使用及连接云服务器的教程

一、注册免费阿里云服务器 1. 进入阿里云服务器官网 阿里云-计算&#xff0c;为了无法计算的价值https://www.aliyun.com/?spm5176.ecscore_server.console-base_top-nav.dlogo.39144df5uvPLOm 2. 点击免费试用 这里我已经试用过了&#xff0c;大家选择合适的云服务器点击立…

如何清理 Docker 占用的巨大磁盘空间

我相信很多人在使用 Docker 一段时间后&#xff0c;都会遇到一个常见问题&#xff1a;磁盘空间被迅速吃光&#xff0c;尤其是在进行频繁的镜像构建、测试和运行容器时。以我自己为例&#xff0c;在 Ubuntu 24.04设备上&#xff0c;docker system df -v 一看&#xff0c;Docker …

【CMake】缓存变量

目录 一. 缓存变量 二.创建缓存变量 2.1.使用set()来创建缓存变量 2.2.使用FORCE参数来覆盖缓存变量 2.2.1.示例1——不带force的set是不能覆盖已经存在的缓存变量的 2.2.2.示例2——带force的set才能覆盖已经存在的缓存变量 2.2.3.对比示例 2.3.命令行 -D 创建/覆盖缓…

vue2使用若依框架动态新增tab页并存储之前的tab页的操作

1. 应用场景&#xff1a;点击历史记录&#xff0c;要比较两个tab页的内容时&#xff0c;需要做到切换tab页来回看左右对数据对比。2.开发难点若依项目正常是把路由配置到菜单管理里&#xff0c;都是设定好的。不过它也给我们写好了动态新增tab页的方&#xff0c;需要我们自己来…

论文阅读-SelectiveStereo

文章目录1 概述2 模块2.1 SelectiveIGEV和IGEV的差异2.2 上下文空间注意力2.2.1 通道注意力2.2.2 空间注意力2.3 SRU3 效果参考资料1 概述 本文主要结合代码对Selective的创新点进行针对性讲解&#xff0c;相关的背景知识可以参考我写的另两篇文章论文阅读-RaftStereo和论文阅…

深入分析神马 M56S+ 202T 矿机参数与性能特点

引言在比特币&#xff08;BTC&#xff09;和比特币现金&#xff08;BCH&#xff09;等主流加密货币的挖掘过程中&#xff0c;矿机的选择直接关系到挖矿的效率与收益。神马 M56S 202T矿机是SHA-256算法的矿机&#xff0c;凭借其强大的算力和高效的能效比&#xff0c;成为了矿工们…

36.2Linux单总线驱动DS18B20实验(详细讲解代码)_csdn

想必看过我很多次博客的同学&#xff0c;都知道了编写驱动的流程&#xff01; 这里我们还是按照以前的习惯来一步一步讲解&#xff01; 单总线驱动&#xff0c;在F103和51单片机的裸机开发中是经常见的。 linux驱动代码编写实际上就是&#xff0c;端对端的编程&#xff01; 就是…

【杂类】应对 MySQL 处理短时间高并发的请求:缓存预热

一、什么是缓存预热&#xff1f;1. 核心概念​​缓存预热&#xff08;Cache Warm-up&#xff09;​​ 是指在系统​​正式对外提供服务之前​​&#xff0c;或​​某个高并发场景来临之前​​&#xff0c;​​主动​​将后续极有可能被访问的热点数据从数据库&#xff08;MySQL…

点评项目(Redis中间件)第三部分短信登录,查询缓存

可以直接看后面Redis实现功能的部分基于session实现短信登录发送短信验证码前端请求样式业务层代码Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {Overridepublic Result sendCode(String phone, HttpSession se…

线性方程求解器的矩阵分裂

大概思路是对的&#xff0c;但是查老师可能会出现幻觉&#xff0c;小心食用 &#x1f603;这段代码是在初始化迭代法求解器&#xff0c;构建迭代矩阵和分裂矩阵。以下是详细解释&#xff1a; if init_from_func or init_from_input:# 1. 存储刚度矩阵self.stiff_p stiff_p# 2.…

【Beetle RP2350】雷达模块 CEM5861G-M11 开发使用指南

一、硬件介绍 1、产品特点 Beetle RP2350【RP2350A_QFN60】是一款基于RP2350微控制器的高性能迷你开发板&#xff0c;双核双架构设计&#xff08;支持 Arm Cortex-M33或Hazard3 RISC-V内核&#xff09;为开发者提供灵活的性能配置。 双核双架构&#xff0c;性能自由切换 采…

高通Android 13 开机黑屏问题深度剖析与解决方案

1. 问题概述 在 Android 13 系统定制化开发过程中&#xff0c;开机流程的调试与优化颇具挑战性。一个典型问题是&#xff1a;当开机动画播放完毕后&#xff0c;设备会先出现数秒黑屏&#xff0c;然后才进入锁屏界面。本文基于开机日志分析&#xff0c;结合实际项目经验&#x…

腾讯推出AI CLI工具CodeBuddy,国内首家同时支持插件、IDE和CLI三种形态的AI编程工具厂商

2025年9月9日&#xff0c;腾讯正式推出自研AI CLI工具CodeBuddy code&#xff0c;成为国内首家同时支持插件、IDE和CLI三种形态的AI编程工具厂商。这一创新不仅填补了国内市场在全形态AI编程工具领域的空白&#xff0c;更以编码时间缩短40%、AI生成代码占比超50%的硬核数据&…