Nuxt3 的生命周期和鉤子函數(二)


title: Nuxt3 的生命周期和鉤子函數(二)
date: 2024/6/26
updated: 2024/6/26
author: cmdragon

excerpt:
摘要:本文深入介紹了Nuxt.js框架中幾個關鍵的生命周期鉤子函數,包括app:redirected(SSR環境下重定向前觸發)、app:beforeMount(CSR下應用掛載前)、app:mounted(CSR下Vue應用在瀏覽器掛載時)、app:suspense:resolve(CSR中Suspense組件解析子組件完成時)以及link:prefetch(CSR中NuxtLink預取鏈接時)和page:start(CSR頁面渲染啟動時)。通過代碼示例展示了如何利用defineNuxtPlugin定義插件并借助nuxtApp.hook監聽這些鉤子以執行特定任務,強調了各鉤子的應用場景及在客戶端和服務器端的不同行為。

categories:

  • 前端開發

tags:

  • Nuxt3
  • SSR
  • CSR
  • 鉤子函數
  • 生命周期
  • Vue.js
  • 頁面渲染

在這里插入圖片描述

在這里插入圖片描述

掃碼關注或者微信搜一搜:編程智域 前端至全棧交流與成長

app:redirected

參數:無
環境:服務器端(Server-Side Rendering, SSR)

描述:

在 Nuxt.js 中,app:redirected 是一個鉤子函數,它會在服務器端渲染(SSR)重定向(redirect)之前被調用。

詳細解釋:

在 Nuxt.js 應用程序中,可以使用鉤子函數來在特定的生命周期事件中執行自定義的 JavaScript 代碼。app:redirected 鉤子函數在服務器端渲染(SSR)期間,在重定向(redirect)發生前被調用。

使用示例:

可以使用 export default defineNuxtPlugin() 的方式來使用此鉤子函數,如下所示:

export default defineNuxtPlugin((nuxtApp) => {nuxtApp.hook('app:redirected', () => {// 在這里編寫重定向前需要執行的代碼console.log('重定向前執行的代碼...')})
})

在上面的示例中,我們使用 defineNuxtPlugin() 函數來注冊一個插件,并在插件函數中使用 nuxtApp.hook() 函數來注冊 app:redirected 鉤子函數。在鉤子函數中,我們可以編寫重定向前需要執行的代碼。

需要注意的是,app:redirected 鉤子函數只會在服務器端渲染(SSR)期間被調用,因此在客戶端渲染(Client-Side Rendering, CSR)期間是不會被調用的。

app:beforeMount

參數:vueApp

環境:客戶端端(Client-Side Rendering, CSR)

描述:

在 Nuxt.js 中,app:beforeMount 是一個鉤子函數,它會在應用程序掛載之前被調用,僅在客戶端端調用。

詳細解釋:

在 Nuxt.js 應用程序中,可以使用鉤子函數來在特定的生命周期事件中執行自定義的 JavaScript 代碼。app:beforeMount 鉤子函數會在應用程序掛載之前被調用,且僅在客戶端端(Client-Side Rendering, CSR)調用。

使用示例:

可以使用 export default defineNuxtPlugin() 的方式來使用此鉤子函數,如下所示:

export default defineNuxtPlugin((nuxtApp) => {nuxtApp.hook('app:beforeMount', (vueApp) => {// 在這里編寫應用程序掛載前需要執行的代碼console.log('應用程序掛載前執行的代碼...')console.log(vueApp)})
})

在上面的示例中,我們使用 defineNuxtPlugin() 函數來注冊一個插件,并在插件函數中使用 nuxtApp.hook() 函數來注冊 app:beforeMount 鉤子函數。在鉤子函數中,我們可以編寫應用程序掛載前需要執行的代碼,并可以通過 vueApp 參數獲取 Vue.js 應用程序實例。

需要注意的是,app:beforeMount 鉤子函數僅在客戶端端渲染(Client-Side Rendering, CSR)期間被調用,因此在服務器端渲染(Server-Side Rendering, SSR)期間是不會被調用的。

app:mounted

參數:vueApp

環境:客戶端端(Client-Side Rendering, CSR)

描述:

在 Nuxt.js 中,app:mounted 是一個鉤子函數,它會在 Vue 應用程序初始化并在瀏覽器中掛載時調用,僅在客戶端端調用。

詳細解釋:

在 Nuxt.js 應用程序中,可以使用鉤子函數來在特定的生命周期事件中執行自定義的 JavaScript 代碼。app:mounted 鉤子函數會在 Vue 應用程序初始化并在瀏覽器中掛載時被調用,且僅在客戶端端(Client-Side Rendering, CSR)調用。

使用示例:

可以使用 export default defineNuxtPlugin() 的方式來使用此鉤子函數,如下所示:

export default defineNuxtPlugin((nuxtApp) => {nuxtApp.hook('app:mounted', (vueApp) => {// 在這里編寫 Vue 應用程序初始化并在瀏覽器中掛載時需要執行的代碼console.log('Vue 應用程序初始化并在瀏覽器中掛載時執行的代碼...')console.log(vueApp)})
})

在上面的示例中,我們使用 defineNuxtPlugin() 函數來注冊一個插件,并在插件函數中使用 nuxtApp.hook() 函數來注冊 app:mounted 鉤子函數。在鉤子函數中,我們可以編寫 Vue 應用程序初始化并在瀏覽器中掛載時需要執行的代碼,并可以通過 vueApp 參數獲取 Vue.js 應用程序實例。

需要注意的是,app:mounted 鉤子函數僅在客戶端端渲染(Client-Side Rendering, CSR)期間被調用,因此在服務器端渲染(Server-Side Rendering, SSR)期間是不會被調用的。

app:suspense:resolve

參數:appComponent

環境:客戶端端(Client-Side Rendering, CSR)

描述:

在 Nuxt.js 應用程序中,app:suspense:resolve 是一個鉤子函數,它會在 Suspense 組件解析其子組件時調用。此鉤子僅在客戶端端(CSR)執行。

詳細解釋:

Suspense 是 Vue 3 引入的一個用于處理異步組件和異步依賴的組件。在 Nuxt.js 中,你可以使用 app:suspense:resolve 鉤子來監聽 Suspense 組件解析其子組件的事件。當 Suspense 組件的子組件全部解析完成時,此鉤子會被觸發。

使用示例:

以下是如何使用 export default defineNuxtPlugin() 方式注冊 app:suspense:resolve 鉤子的示例代碼:

export default defineNuxtPlugin((nuxtApp) => {nuxtApp.hook('app:suspense:resolve', (appComponent) => {// 在這里編寫當 Suspense 解析事件發生時需要執行的代碼console.log('Suspense 組件解析完成,子組件已準備就緒...')console.log(appComponent)})
})

在上面的代碼中,我們注冊了一個插件并在插件內部使用 nuxtApp.hook() 方法來監聽 app:suspense:resolve 事件。當 Suspense 組件解析其子組件時,會調用這個鉤子函數,并傳入 appComponent 參數,該參數是解析完成的組件實例。

案例 Demo:

link:prefetch

page:start

余下文章內容請點擊跳轉至 個人博客頁面 或者 掃碼關注或者微信搜一搜:編程智域 前端至全棧交流與成長,閱讀完整的文章:Nuxt3 的生命周期和鉤子函數(二) | cmdragon’s Blog

往期文章推薦:

往期文章歸檔:

  • Nuxt3 的生命周期和鉤子函數(一) | cmdragon’s Blog
  • 初學者必讀:如何使用 Nuxt 中間件簡化網站開發 | cmdragon’s Blog
  • 深入探索 Nuxt3 Composables:掌握目錄架構與內置API的高效應用 | cmdragon’s Blog
  • 掌握 Nuxt 3 中的狀態管理:實踐指南 | cmdragon’s Blog
  • Nuxt 3 路由系統詳解:配置與實踐指南 | cmdragon’s Blog
  • Nuxt 3組件開發與管理 | cmdragon’s Blog
  • Nuxt3頁面開發實戰探索 | cmdragon’s Blog
  • Nuxt.js 深入淺出:目錄結構與文件組織詳解 | cmdragon’s Blog
  • 安裝 Nuxt.js 的步驟和注意事項 | cmdragon’s Blog
  • 探索Web Components | cmdragon’s Blog
  • Vue微前端架構與Qiankun實踐理論指南 | cmdragon’s Blog
  • Vue 3深度探索:自定義渲染器與服務端渲染 | cmdragon’s Blog

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

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

相關文章

20240626讓飛凌的OK3588-C開發板在相機使用1080p60分辨率下預覽

20240626讓飛凌的OK3588-C開發板在相機使用1080p60分辨率下預覽 2024/6/26 15:15 4.2.1 全編譯測試 在源碼路徑內,提供了編譯腳本 build.sh,運行該腳本對整個源碼進行編譯,需要在終端切換到解壓 出來的源碼路徑,找到 build.sh 文件…

6.26作業

1.整理思維導圖 2.統計家目錄下.c文件的個數 ls ~/*.c | wc -l 3.終端輸入一個.sh文件,判斷文件是否由可執行權限,如果有可執行權限運行腳本,沒有可執行權限添加可執行權限后,再運行腳本 #!/bin/bash read -p "請輸入一個.…

spring模塊(二)SpringBean(2)InitializingBean

一、介紹 InitializingBean是Spring框架提供的一個接口,用于在Bean初始化完成后執行特定的初始化邏輯。 二、使用 1、使用方法 1.1、實現InitializingBean接口 可以讓Bean實現該接口,并重寫其afterPropertiesSet()方法 1.2、注冊 也即讓bean初始化…

從官方源碼精簡出第1個FreeRTOS程序

一、下載官方源碼 1、打開百度搜索freerots,找到官網:FreeRTOS官網 2、將源碼解壓到沒有中文目錄的路徑下 二、刪減目錄 1、刪除FreeRTOS-Plus和tools 2、刪除FreeRTOS/Demo下除CORTEX_STM32F103_Keil外的所有文件 3、刪除FreeRTOS\Source\portable下除RVDS和MemM…

vue2面試題——API

1. $set this.$set(目標對象target&#xff0c;改的位置&#xff0c;最終數據) /* 數據更新了而視圖沒有更新的情況 */ <template><div>{{ arr }}<button clickbtn>按鈕</button></div> </template> <script> export default {name:…

海康威視攝像頭修復

一、適用場景 1、室外安裝的攝像頭&#xff0c;長時間日曬雨淋后&#xff0c;可能因風向導致雨水進入水晶頭&#xff0c;進而攝像頭無法識別&#xff1b; 2、在經常施工的場地&#xff0c;可能由于車輛的進出&#xff0c;或施工設備的運行導致攝像頭的網線水晶頭斷裂而無法使用…

潯川社團正式啟用 代碼付費制度——潯川總社部

潯川社團正式啟用 代碼付費制度。 規則&#xff1a; 潯川社團源代碼收費標準表&#xff08;1&#xff09; 1-5行代碼0.2元/行1-10行代碼0.3元/行1-20行代碼0.5元/行 潯川社團源代碼收費標準表&#xff08;2&#xff09; 1-30行代碼0.6元/行1-40行代碼0.8元/行1-50行代碼0.09元…

【PythonWeb開發】Flask中間件鉤子函數實現封IP

在 Flask 框架中&#xff0c; 提供了幾種類型的鉤子&#xff08;類似于Django的中間件&#xff09;&#xff0c;它們是在請求的不同階段自動調用的函數。這些鉤子讓你能夠對請求和響應的處理流程進行擴展&#xff0c;而無需修改核心代碼。 Flask鉤子的四種類型 before_first_r…

IT入門知識第八部分《云計算》(8/10)

目錄 云計算&#xff1a;現代技術的新篇章 1. 云計算基礎 1.1 云計算的起源和發展 云計算的早期概念 云計算的發展歷程 1.2 云計算的核心特點 按需自助服務 廣泛的網絡訪問 資源池化 快速彈性 按使用量付費 1.3 云計算的優勢和挑戰 成本效益 靈活性和可擴展性 維…

[leetcode]intersection-of-two-arrays-ii 兩個數組的交集 II

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {sort(nums1.begin(), nums1.end());sort(nums2.begin(), nums2.end());int length1 nums1.size(), length2 …

動態規劃——123. 買賣股票的最佳時機 III

目錄 1、題目鏈接 2、題目分析 1.狀態表示 2.狀態轉移方程 3.初始化 4.填表 5.返回值 3、代碼解析 1、題目鏈接 123. 買賣股票的最佳時機 III 2、題目分析 1.狀態表示 由題目可知&#xff0c;我們分為兩種狀態&#xff0c;買入和賣出&#xff0c;又因為只能完成兩次交易…

windows下如何配置vs code的編譯環境

在 Windows 上配置 VS Code 的編譯環境涉及安裝編譯器、配置 VS Code 以及編寫和運行代碼。以下是具體的步驟&#xff1a; 步驟 1&#xff1a;安裝必要的軟件 安裝 Visual Studio Code&#xff1a; 訪問 VS Code 的官方網站并下載安裝包。按照安裝向導進行安裝。 安裝 C/C 編譯…

盲源信道分離—FastICA算法性能仿真

本案例中使用Matlab軟件對FastICA算法的聲音分離性能進行了仿真&#xff0c;分別對簡單波形的混合信號、不同類型聲音的混合信號、同一類型的混合信號這三種情況進行仿真&#xff0c;主要從分離信號的波形形狀、串音誤差兩方面對分離性能進行衡量&#xff0c;仿真結果顯示快速I…

Gradle學習-3 Gradle構建的生命周期

Gradle常用文件目錄 Gradle 構建的生命周期&#xff0c;有3個階段: 初始化階段配置階段執行階段 1、初始化階段 Gradle 支持構建單個工程個多個子工程&#xff0c;初始化階段主要負責收集所有參與本次構建的子工程&#xff0c;創建一個項目的層次結構&#xff0c;并未每個…

SpringBoot優點達項目實戰:獲取系統配置接口(三)

SpringBoot優點達項目實戰&#xff1a;獲取系統配置接口&#xff08;二&#xff09; 文章目錄 SpringBoot優點達項目實戰&#xff1a;獲取系統配置接口&#xff08;二&#xff09;1、查看接口2、查看數據庫3、代碼實現1、創建實體類SysConfig2、創建返回數據的vo3、創建control…

【INTEL(ALTERA)】Eclipse Nios II SBT 無法從模板創建新應用程序和 BSP

目錄 說明 解決方法 說明 您應該能夠創建新的應用程序和 BSP 模板包含以下步驟&#xff1a; 選擇 Nios II應用程序和 BSP 來自模板。選擇您的.sopcinfo 文件并選擇模板。從您的工作區單擊 選擇現有的 BSP 項目。單擊 創建。選擇所需的 BSP 選項。單擊 完成。 但是&#xf…

API 安全策略和基礎指南

API 是當今數字創新計劃的核心&#xff0c;已成為應用程序的頭號攻擊載體。了解什么是 API 安全、為什么它如此重要&#xff0c;以及如何保護您的 API 免受現代威脅至關重要。 什么是 API 安全&#xff1f; 應用程序編程接口&#xff08;API&#xff09;是現代應用程序的基石…

PostgreSQL教程:開啟您的數據庫之旅

PostgreSQL教程&#xff1a;開啟您的數據庫之旅 PostgreSQL是一種開源的對象關系型數據庫管理系統&#xff08;ORDBMS&#xff09;&#xff0c;它以其強大的功能、穩定性和高度的可擴展性而聞名。作為一個功能豐富的數據庫系統&#xff0c;PostgreSQL支持復雜的查詢、強大的事…

Python 面試題解析

Python 面試題解析 Python 作為一種廣泛使用的編程語言&#xff0c;其面試題目通常覆蓋了語言基礎、數據結構、算法、設計模式、Web 開發、測試、數據庫、系統設計等多個方面。以下是一些常見的 Python 面試題及其解析&#xff0c;使用 Markdown 格式編寫。 1. Python 基礎 …

Linux-筆記 OverlayFS文件系統小應用

前言 通過另一章節 OverlayFS文件系統入門 中已經大致了解了原理&#xff0c;這里來實現一個小應用。