【Vue】探究 Vue 2 與 Vue 3 生命周期:變化與延續

💗💗💗歡迎來到我的博客,你將找到有關如何使用技術解決問題的文章,也會找到某個技術的學習路線。無論你是何種職業,我都希望我的博客對你有所幫助。最后不要忘記訂閱我的博客以獲取最新文章,也歡迎在文章下方留下你的評論和反饋。我期待著與你分享知識、互相學習和建立一個積極的社區。謝謝你的光臨,讓我們一起踏上這個知識之旅!
請添加圖片描述

文章目錄

  • 🍀什么是生命周期?
  • 🍀Vue2的生命周期
  • 🍀Vue3的生命周期
  • 🍀 Vue 2 與 Vue 3 生命周期的變化
  • 🍀 結論

🍀什么是生命周期?

生命周期指的是事物從誕生到消亡所經歷的各個階段或過程。在軟件開發中,特別是在前端開發中,生命周期通常指的是一個軟件組件(比如網頁、應用程序)從創建到銷毀的整個過程。在這個過程中,組件會經歷不同的階段,每個階段都有自己的特點和功能

如果問它有啥用的話,那么就是它可以幫助開發者更好地理解和控制軟件的行為,例如在特定階段執行特定的操作,或者釋放資源以防止內存泄漏,本節我們將簡單介紹一下Vue2,3當中的生命周期,以及它們的相同不同之處


🍀Vue2的生命周期

前幾節我們都是使用Vue3進行實操,但是我們還沒有創建過Vue2的項目,這里我們創建一個Vue2的項目
我們再來回顧一下

vue create vue2_test

接下來我們選擇vue2
在這里插入圖片描述

接下來我們就暫且等待創建成功吧
在這里插入圖片描述

創建完成后,我們將根組件也就是App.vue中的內容進行清理一下,同時創建一個Person.vue作為子組件,同時在子組件里面寫上我們的初識代碼

<template></template><script>export default {name: 'Person',
}
</script>

相比于Vue3,Vue2的運行命令如下

npm run serve

別忘了根組件的書寫

<template><Person/>
</template><script>
import Person from './components/Person.vue'
export default {name: 'App',components:{Person}
}
</script>

接下來我們上正題
在 Vue 2 中,組件的生命周期包括了創建、掛載、更新和銷毀四個階段。下面是 Vue 2 的生命周期鉤子函數列表:

  • beforeCreate: 在實例初始化之后,數據觀測 (data observer) 和事件配置 (event watchers) 之前被調用。
  • created: 實例已經創建完成后被調用,此時組件的數據綁定、計算屬性、方法、事件等都已初始化。
beforeCreate(){console.log('創建前')
},
created(){console.log('創建完畢')
}
  • beforeMount: 在掛載開始之前被調用,相關的渲染函數首次被調用。
  • mounted: 實例掛載完成后被調用,此時 DOM 元素已經插入文檔中。
beforeMount(){console.log('掛載前')
},
mounted(){console.log('掛載完畢')
}
  • beforeUpdate: 數據更新時調用,發生在虛擬 DOM 重新渲染和打補丁之前。
  • updated: 組件更新完成后被調用,此時 DOM 已經更新。
beforeUpdate(){console.log('更新前')
},
updated(){console.log('更新完畢')
}
  • beforeDestroy: 實例銷毀之前調用。在這一步,實例仍然完全可用。
  • destroyed: 實例銷毀后調用,此時 Vue 實例的所有指令、事件監聽器被移除,所有子實例也被銷毀。
beforeDestroy(){console.log('銷毀前')
},
destroyed(){console.log('銷毀完畢')
}

🍀Vue3的生命周期

在 Vue 3 中,與 Vue 2 類似,依然保留了創建、掛載、更新和銷毀四個階段,但在細節上有所調整和優化。Vue 3 為了提高性能,對一些生命周期鉤子進行了拆分和合并。

下面是 Vue 3 的生命周期鉤子函數列表:

  • setup:創建
  • onBeforeMount: 在掛載開始之前被調用,相關的渲染函數首次被調用。
  • onMounted: 實例掛載完成后被調用,此時 DOM 元素已經插入文檔中。
  • onBeforeUpdate: 數據更新時調用,發生在虛擬 DOM 重新渲染和打補丁之前。
  • onUpdated: 組件更新完成后被調用,此時 DOM 已經更新。
  • onBeforeUnmount: 在卸載組件之前調用。
  • onUnmounted: 組件卸載后調用。
	// 創建console.log('創建')// 掛載前onBeforeMount(()=>{// console.log('掛載前')})// 掛載完畢onMounted(()=>{//console.log('掛載完畢')})// 更新前onBeforeUpdate(()=>{// console.log('更新前')})// 更新完畢onUpdated(()=>{// console.log('更新完畢')})// 卸載前onBeforeUnmount(()=>{// console.log('卸載前')})// 卸載完畢onUnmounted(()=>{// console.log('卸載完畢')})

注意:父組件的最后掛載的


🍀 Vue 2 與 Vue 3 生命周期的變化

在 Vue 3 中,生命周期鉤子函數的名稱發生了變化,從 before 和 mounted 變為 onBefore 和 onMounted。這樣的調整使得生命周期鉤子的命名更加一致和清晰。此外,Vue 3 還將銷毀階段的鉤子函數從 beforeDestroy 和 destroyed 合并為 onBeforeUnmount 和 onUnmounted,簡化了生命周期的管理和理解。

另外,Vue 3 通過引入 Composition API,進一步提升了組件的靈活性和復用性。通過 Composition API,開發者可以更加自由地組織組件邏輯,不再受限于固定的生命周期鉤子函數,這對于復雜組件的開發尤為重要。

🍀 結論

本文對 Vue 2 和 Vue 3 的生命周期進行了對比與分析,介紹了兩者的異同點。Vue 3 在保留 Vue 2 生命周期特性的基礎上,做出了一些調整和優化,以提升開發體驗和性能。了解和熟悉 Vue 的生命周期對于正確使用和優化 Vue 應用程序至關重要,希望本文能夠幫助讀者更好地理解和應用 Vue.js。

請添加圖片描述

挑戰與創造都是很痛苦的,但是很充實。

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

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

相關文章

paper-ai :搜索真實文獻并生成引用真實文獻的AI論文

paper-ai &#xff1a;搜索真實文獻并生成引用真實文獻的AI論文。 項目簡介 使用真實文獻最快速完成論文的方法 利用人工智能撰寫論文 人工智能書寫功能&#xff1a;點擊 "AI 寫作 "進行正常對話互動。人工智能將根據您的輸入提供寫作建議或回答問題。 尋找文獻功能…

C/C++工程師面試題(STL篇)

STL 中有哪些常見的容器 STL 中容器分為順序容器、關聯式容器、容器適配器三種類型&#xff0c;三種類型容器特性分別如下&#xff1a; 1. 順序容器 容器并非排序的&#xff0c;元素的插入位置同元素的值無關&#xff0c;包含 vector、deque、list vector&#xff1a;動態數組…

DocxToDoc.java

DocxToDoc.java word高版本docx轉化word2003版本 package word;import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagrap…

【Ubuntu 20.04 / 22.04 LTS】最新 esp-matter SDK 軟件編譯環境搭建步驟

倉庫鏈接&#xff1a;esp-matter SDK官方軟件說明&#xff1a;ESP Matter Programming Guide官方參考文檔&#xff1a;使用 Matter-SDK 快速搭建 Matter 環境 (Linux) 環境要求 Ubuntu 20.04 或 Ubuntu22.04網絡環境支持訪問 Gihub 在安裝 esp-matter SDK 軟件編譯環境之前&a…

三八女神節特別推薦:完美禮物俘獲她的芳心

三八女神節馬上就要到了&#xff0c;這是一個贊頌女性獨立、堅韌與美麗的時刻。在這個充滿溫馨與敬意的日子里&#xff0c;很多人想要為那些綻放光彩的女性們獻上一份特別的禮物。這不僅是一份物質上的饋贈&#xff0c;更是一份心靈上的交流&#xff0c;一次情感上的共鳴。 真…

面試經典150題——簡化路徑

"A goal is a dream with a deadline." - Napoleon Hill 1. 題目描述 2. 題目分析與解析 2.1 思路一 這個題目開始看起來并不太容易知道該怎么寫代碼&#xff0c;所以不知道什么思路那就先模擬人的行為&#xff0c;比如對于如下測試用例&#xff1a; 首先 /代表根…

手把手教會你使用Markdown【從入門到精通一篇就夠了】

手把手教會你使用Markdown【從入門到精通一篇就夠了】 前言一、Markdown是什么二、Markdown優點三、Markdown的基本語法3.1 標題3.2 字體3.3 換行3.4 引用3.5 鏈接3.6 圖片3.7 列表3.8 分割線3.9 刪除線3.10 下劃線3.11 代碼塊3.12 表格3.13 腳注3.14 特殊符號 四、Markdown的高…

UCSF DOCK 分子對接詳細案例(04)-基于RDKit描述符的分子從頭設計DOCK_D3N

歡迎瀏覽我的CSND博客&#xff01; Blockbuater_drug …點擊進入 文章目錄 前言一、 軟件及操作環境二、研究目的三、結構文件準備四、 DOCK/RDKit中 de novo design4.1 de novo design - refine_D3N4.2 對輸出重新評分 總結參考資料 前言 本文是UCSF DOCK的使用案例分享&…

lv20 QT事件5

1 事件模型 2 事件處理 virtual void keyPressEvent(QKeyEvent *event) virtual void keyReleaseEvent(QKeyEvent *event) virtual void mouseDoubleClickEvent(QMouseEvent *event) virtual void mouseMoveEvent(QMouseEvent *event) virtual void mousePressEvent(QMou…

【短時交通流量預測】基于Elman神經網絡

課題名稱&#xff1a;基于Elman神經網絡的短時交通流量預測 版本時間&#xff1a;2023-04-27 代碼獲取方式&#xff1a;QQ&#xff1a;491052175 或者 私聊博主獲取 模型簡介&#xff1a; 城市交通路網中交通路段上某時刻的交通流量與本路段前幾個時段的交通流量有關&#…

自己拍攝的視頻能做成二維碼嗎?快速在線生碼該怎么操作?

自己拍攝的視頻能做成二維碼嗎&#xff1f;現在掃描二維碼用來播放視頻的使用場景越來越多&#xff0c;這種方式的流行在于能夠通過更低的成本獲取更好的效果&#xff0c;有效的提升用戶獲取視頻內容的體驗&#xff0c;通過消耗流量就可以播放視頻。 那么視頻制作二維碼一般會…

vue2 vue-router源碼解析

目錄 Vue Router 的基本結構和功能 源碼分析 一. 編寫install 方法 二 .生命變量存儲路由信息和當前路由 三 .初始化路由 把路由信息記錄在routeMap中 四.注冊router-link 和router-view 組件 Vue Router 的基本結構和功能 路由器實例&#xff08;Router 實例&#xff09;…

Vue.js 修飾符:精準控制組件行為

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》 &#x1f35a; 藍橋云課簽約作者、上架課程《Vue.js 和 E…

多點通信與域套接字:2024/3/4

作業1&#xff1a;廣播 發送端&#xff1a; #include <myhead.h> int main(int argc, const char *argv[]) {//1.創建套接字int sfdsocket(AF_INET,SOCK_DGRAM,0);if(sfd-1){perror("socket error");return -1;}printf("sfd%d\n",sfd);//2.設置當前…

藍橋杯復習之前綴和

題目鏈接&#xff1a;https://www.luogu.com.cn/problem/P8649 思路&#xff1a; 看到區間和&#xff0c;第一反應肯定是前綴和&#xff0c;我們求出前綴和后對前綴和數組每一個值模k&#xff0c;然后對一個數組的值查看前面有幾個相同的&#xff0c;舉個例子&#xff1a;…

【python 常見錯誤】

標題【python 常見錯誤】 一、python 常見錯誤 Python編程過程中&#xff0c;開發者可能會遇到多種類型的錯誤。這些錯誤大致可以分為三類&#xff1a;語法錯誤&#xff08;SyntaxError&#xff09;、邏輯錯誤和運行時錯誤。下面將詳細介紹這幾種錯誤類型&#xff0c;并提供相…

【動態規劃】第十一屆藍橋杯省賽第二場C++ C組《數字三角形》(c++)

1.題目描述 上圖給出了一個數字三角形。 從三角形的頂部到底部有很多條不同的路徑。 對于每條路徑&#xff0c;把路徑上面的數加起來可以得到一個和&#xff0c;你的任務就是找到最大的和。 路徑上的每一步只能從一個數走到下一層和它最近的左邊的那個數或者右邊的那個數。 …

Pytorch學習 day03(Tensorboard)

Tensorboard Tensorboard能夠可視化loss的變化過程&#xff0c;便于我們查看模型的訓練狀態&#xff0c;也能查看模型當前的輸入和輸出結果 在Pycharm中&#xff0c;可以通過按住ctrl&#xff0c;并左鍵點擊某個庫來進入源文件查看該庫的使用方法 SummaryWriter是用來向log_di…

3分鐘,學會一個測試員必懂 Lambda 小知識!

今天再來給大家介紹下函數式接口和方法引用。 函數式接口 問&#xff1a;Lambda 表達式的類型是什么&#xff1f; 答&#xff1a;函數式接口 問&#xff1a;函數式接口是什么&#xff1f; 答&#xff1a;只包含一個抽象方法的接口&#xff0c;稱為函數式接口 &#xff08;…

Linux服務器磁盤及內存用量監控Python腳本(推送釘釘群通知)

文章目錄 Python 腳本釘釘推送通知定時任務 Python 腳本 # -*- coding: utf-8 -*- import subprocessdef get_disk_usage():# 執行 df 命令獲取磁盤使用情況df_process subprocess.Popen([df, -h, /], stdoutsubprocess.PIPE)output, _ df_process.communicate()output out…