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
英文地址,請注明出處:http://en.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%的硬核數據&…