Vue2 和 Vue3 的核心區別

1. 響應式原理:從「手動擋」到「自動擋」

  • Vue2
    使用 Object.defineProperty 監聽數據變化,但無法檢測新增屬性數組索引修改,需要借助 Vue.set

    // Vue2 中修改數組元素不會觸發視圖更新
    this.list[0] = '新值';         // ? 不生效
    this.$set(this.list, 0, '新值'); // ? 生效
    
  • Vue3
    使用 Proxy 實現響應式,自動支持所有數據變化類型

    // Vue3 中直接修改即可
    list.value[0] = '新值'; // ? 自動觸發更新
    

比喻
Vue2 像手動擋車,需要換擋(Vue.set)才能提速;Vue3 是自動擋,直接踩油門就能跑。


2. 代碼組織方式:從「分柜子」到「自由組合」

  • Vue2(Options API)
    需要將代碼拆分到 datamethodscomputed 等選項中,邏輯分散。

    // Vue2:數據和方法分散
    export default {data() { return { count: 0 } },methods: { increment() { this.count++ } }
    }
    
  • Vue3(Composition API)
    使用 setup 函數,按邏輯功能組織代碼(類似 React Hooks)。

    // Vue3:相關邏輯寫在一起
    import { ref } from 'vue';
    export default {setup() {const count = ref(0);const increment = () => { count.value++ };return { count, increment };}
    }
    

比喻
Vue2 像把衣服、褲子、襪子分開放不同抽屜;Vue3 像按季節搭配好套裝,方便取用。


3. 生命周期:名稱更直觀

功能Vue2 鉤子Vue3 鉤子
組件掛載前beforeCreatesetup() 替代
組件掛載完成mountedonMounted
組件銷毀前beforeDestroyonBeforeUnmount
組件銷毀后destroyedonUnmounted

示例

// Vue3 使用生命周期鉤子
import { onMounted } from 'vue';
export default {setup() {onMounted(() => {console.log('組件掛載完成!');});}
}

4. 性能優化:更快更輕量

  • 打包體積:Vue3 核心庫比 Vue2 小 40%
  • 渲染速度:Vue3 的虛擬 DOM 算法優化,更新速度提升 100%
  • Tree-shaking:Vue3 支持按需引入功能,未使用的代碼不會打包進項目。

比喻
Vue2 像裝滿工具的卡車,Vue3 像只帶必需工具的跑車,更快更靈活。


5. 新特性:解決痛點問題

多個根元素(Fragment)
<!-- Vue2:必須有單個根元素 -->
<template><div><h1>標題</h1><p>內容</p></div>
</template><!-- Vue3:允許多個根元素 -->
<template><h1>標題</h1><p>內容</p>
</template>
Teleport(傳送門)

將組件渲染到任意 DOM 節點(如全局彈窗):

<template><teleport to="#modal-container"><div class="modal">我是一個彈窗</div></teleport>
</template>

總結:Vue2 vs Vue3 如何選擇?

  • Vue2:適合維護舊項目或對兼容性要求高的場景。
  • Vue3:推薦新項目使用,性能更好、代碼更靈活、生態完善(如 Pinia、Vite)。

升級建議

  • 小型項目:直接重寫為 Vue3。
  • 大型項目:逐步遷移,使用 @vue/compat 兼容模式過渡。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79347.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79347.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79347.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EMMC存儲性能測試方法

記于 2022 年 9 月 15 日 EMMC存儲性能測試方法 - Wesley’s Blog 參考Android-emmc性能測試 | 一葉知秋進行實踐操作 dd 命令 頁面緩存 為了測試 emmc 的真實讀寫性能&#xff0c;我們需要先把頁面緩存給清理&#xff1a; echo 1 > /proc/sys/vm/drop_caches console:…

軟件管理(安裝方式)

1.rpm安裝 1.1.rpm介紹 rpm軟件包名稱: 軟件名稱 版本號(主版本、次版本、修訂號) 操作系統 -----90%的規律 舉例:openssh-6.6.1p1-31.el7.x86_64.rpm 數字是版本號:第一位主版本號,第二位次版本號,帶橫杠的是修訂號, el幾---操作系統的版本。 #用rpm安裝需要考慮如下信…

OnlyOffice Document Server 源碼調試指南-ARM和x86雙模式安裝支持

在ARM64架構下創建的ONLYOFFICE源碼調試容器具有顯著優勢。該容器基于官方Document Server鏡像構建&#xff0c;通過集成Git、Python和Node.js等工具鏈&#xff0c;實現跨平臺環境一致性&#xff0c;確保ARM設備的兼容性。容器化隔離消除了依賴沖突&#xff0c;支持快速部署到邊…

oracle 數據庫查詢指定用戶下每個表占用空間的大小,倒序顯示

oracle 查詢指定用戶下每個表占用空間的大小&#xff0c;倒序顯示 使用場景&#xff1a;數據分析&#xff1b;導出醫院正式庫到開發環境時&#xff0c;查詢出占用表空間高的業務表、導出時排除該表 在Oracle數據庫中&#xff0c;要查詢指定用戶下每個表占用空間的大小并以倒序…

歸并排序【逆序對】

目錄 歸并排序原理 逆序對 歸并排序 主要利用分治思想&#xff0c;時間復雜度O(nlogn) 原理 1.對數列不斷等長拆分&#xff0c;直到一個數的長度。2.回溯時&#xff0c;按升序合并左右兩段。3.重復以上兩個過程&#xff0c;直到遞歸結束。 合并 1.i&#xff0c;j分別指向a的…

AI 與生物技術的融合:開啟精準醫療的新紀元

在科技飛速發展的今天&#xff0c;人工智能&#xff08;AI&#xff09;與生物技術的融合正在成為推動醫療領域變革的重要力量。精準醫療作為現代醫學的重要發展方向&#xff0c;旨在通過深入了解個體的基因信息、生理特征和生活方式&#xff0c;為患者提供個性化的治療方案。AI…

對比表格:數字簽名方案、密鑰交換協議、密碼學協議、后量子密碼學——密碼學基礎

文章目錄 一、數字簽名方案1.1 ECDSA&#xff1a;基于橢圓曲線的數字簽名算法1.2 EdDSA&#xff1a;Edwards曲線數字簽名算法1.3 RSA-PSS&#xff1a;帶有概率簽名方案的RSA1.4 數字簽名方案對比 二、密鑰交換協議2.1 Diffie-Hellman密鑰交換2.2 ECDH&#xff1a;橢圓曲線Diffi…

Linux 進程間通信(IPC)詳解

進程間通信&#xff08;IPC&#xff09;深入解析 一、進程間通信概述 在操作系統里&#xff0c;不同進程間常常需要進行數據交換、同步協調等操作&#xff0c;進程間通信&#xff08;Inter - Process Communication&#xff0c;IPC&#xff09;機制應運而生。在Linux系統中&a…

深度解析ComfyUI的使用

一、ComfyUI 概述 ComfyUI 本質上是一個專為 AI 繪畫愛好者和專業人士打造的用戶界面工具&#xff0c;它的核心作用是將復雜的 AI 繪畫生成過程以直觀的方式呈現給用戶。與傳統的圖像生成工具不同&#xff0c;ComfyUI 借助其獨特的節點化工作流系統&#xff0c;把深度學習模型…

模型測試報錯:有2張顯卡但cuda.device_count()顯示GPU卡數量只有一張

此貼僅為記錄debug過程&#xff0c;為防后續再次遇見 問題 問題情境 復現文章模型&#xff0c;使用GPU跑代碼&#xff0c;有兩張GPU&#xff0c;設置在 cuda: 1 上跑 問題描述 在模型測試加載最優模型時報錯&#xff1a;torch.cuda.device_count()顯示GPU卡數量只有一張&…

【計網】認識跨域,及其在go中通過注冊CORS中間件解決跨域方案,go-zero、gin

一、跨域&#xff08;CORS&#xff09;是什么&#xff1f; 跨域&#xff0c;指的是瀏覽器出于安全限制&#xff0c;前端頁面在訪問不同源&#xff08;協議、域名、端口任一不同&#xff09;的后端接口時&#xff0c;會被瀏覽器攔截。 比如&#xff1a; 前端地址后端接口地址是…

內存性能測試方法

寫于 2022 年 6 月 24 日 內存性能測試方法 - Wesley’s Blog dd方法測試 cat proc/meminfo console:/ # cat proc/meminfo MemTotal: 3858576 kB MemFree: 675328 kB MemAvailable: 1142452 kB Buffers: 65280 kB Cached: 992252 …

AVFormatContext 再分析二

說明 &#xff1a;將 avfromatContext 的變量依次打印分析&#xff0c;根據ffmpeg 給的說明&#xff0c;猜測&#xff0c;結合網上的文章字節寫測試代碼分析二。 37 AVInputFormat *iformat; /** * The input container format. * * Demuxing only, set by avfo…

深入了解Linux系統—— 進程優先級

前言 我們現在了解了進程是什么&#xff0c;進程狀態表示什么 &#xff0c;我們現在繼續來了解進程的屬性 —— 進程優先級 進程執行者 在了解進程優先級之前&#xff0c;先來思考一個問題&#xff1a;在我們進行文件訪問操作時&#xff0c;操作系統是如何直到我們是誰&#x…

Expected SARSA算法詳解:python 從零實現

&#x1f9e0; 向所有學習者致敬&#xff01; “學習不是裝滿一桶水&#xff0c;而是點燃一把火。” —— 葉芝 我的博客主頁&#xff1a; https://lizheng.blog.csdn.net &#x1f310; 歡迎點擊加入AI人工智能社區&#xff01; &#x1f680; 讓我們一起努力&#xff0c;共創…

1penl配置

好的&#xff0c;根據您提供的 1pctl 命令輸出信息&#xff0c;我們來重新依次回答您的所有問題&#xff1a; 第一&#xff1a;1Panel 怎么設置 IP 地址&#xff1f; 根據您提供的 user-info 輸出&#xff1a; 面板地址: http://$LOCAL_IP:34523/93d8d2d705 這里的 $LOCAL_I…

鏈表的回文結構題解

首先閱讀題目&#xff1a; 1.要保證是回文結構 2.他的時間復雜度為O(n)、空間復雜度為O(1) 給出思路: 1.首先利用一個函數找到中間節點 2.利用一個函數逆置中間節點往后的所有節點 3.現在有兩個鏈表&#xff0c;第一個鏈表取頭節點一直到中間節點、第二個鏈表取頭結點到尾…

【LLaMA-Factory實戰】1.3命令行深度操作:YAML配置與多GPU訓練全解析

一、引言 在大模型微調場景中&#xff0c;命令行操作是實現自動化、規模化訓練的核心手段。LLaMA-Factory通過YAML配置文件和多GPU分布式訓練技術&#xff0c;支持開發者高效管理復雜訓練參數&#xff0c;突破單機算力限制。本文將結合結構圖、實戰代碼和生產級部署經驗&#…

C++負載均衡遠程調用學習之 Dns-Route關系構建

目錄 1.LARS-DNS-MYSQL環境搭建 2.LARSDNS-系統整體模塊的簡單說明 3.Lars-Dns-功能說明 4.Lars-Dns-數據表的創建 5.Lars-Dns-整體功能說明 6.Lars-DnsV0.1-Route類的單例實現 7.Lars-DnsV0.1-Route類的鏈接數據庫方法實現 8.Lars-DnsV0.1-定義存放RouteData關系的map數…

fastapi+vue中的用戶權限管理設計

數據庫設計&#xff1a;RBAC數據模型 這是一個典型的基于SQLAlchemy的RBAC權限系統數據模型實現&#xff0c;各模型分工明確&#xff0c;共同構成完整的權限管理系統。 圖解說明&#xff1a; 實體關系&#xff1a; 用戶(USER)和角色(ROLE)通過 USER_ROLE 中間表實現多對多關系…