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 的生命周期和钩子函数(二)的更多相关文章

  1. vue学习笔记(二)vue的生命周期和钩子函数

    前言 通过上一章的学习,我们已经初步的了解了vue到底是什么东西,可以干什么,而这一篇博客主要介绍vue的生命周期和它常用的钩子函数,如果有学过java的园友可能有接触到在学习servlet的时候学过 ...

  2. Vue(3)- 安装脚手架、过滤器、生命周期的钩子函数、vue-router基本使用

    一.安装脚手架 1.下载node.js,本文下载版本为node-v8.12.0-x64.msi,一键式安装. 2.安装完成后,打开终端,输入node,可进入node环境(两次ctrl+c退出),如下图 ...

  3. Vue 3 --安装脚手架、过滤器、生命周期的钩子函数、vue-router基本使用

    一.安装脚手架 1.下载node.js,本文下载版本为node-v8.12.0-x64.msi,一键式安装. 2.安装完成后,打开终端,输入node,可进入node环境(两次ctrl+c退出),如下图 ...

  4. [前端] VUE基础 (5) (过滤器、生命周期、钩子函数)

    一.过滤器 过滤器分为局部过滤器和全局过滤器. 1.局部过滤器 <body> <div id="app"> </div> <script ...

  5. vue学习之生命周期和钩子函数

    参考文章:Vue2.0 探索之路——生命周期和钩子函数的一些理解 抛出问题: 我们有时候会在几个钩子函数里做一些事情,那么什么时候做,该在哪个函数里做? 生命周期简介 结合代码看el 和 data以及 ...

  6. vue生命周期、钩子函数

    https://segmentfault.com/a/1190000011381906    详解生命周期和钩子函数 每个vue实例再被创建之前都要经过一系列的初始化过程,这个过程就是vue的生命周期 ...

  7. vue教程2-01 vue生命周期、钩子函数

    vue教程2-01 vue生命周期.钩子函数 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  8. vue学习(五)生命周期 的钩子函数

    生命周期的钩子函数 主要有以下几种 beforeCreate created beforeMount mounted beforeUpdate updated activated deactivate ...

  9. Vue2.0 【第二季】第4节 Vue的生命周期(钩子函数)

    目录 Vue2.0 [第二季]第4节 Vue的生命周期(钩子函数) 第4节 Vue的生命周期(钩子函数) Vue2.0 [第二季]第4节 Vue的生命周期(钩子函数) 第4节 Vue的生命周期(钩子函 ...

  10. vue2.0项目实战(4)生命周期和钩子函数详解

    最近的项目都使用vue2.0来开发,不得不说,vue真的非常好用,大大减少了项目的开发周期.在踩坑的过程中,因为对vue的生命周期不是特别了解,所以有时候会在几个钩子函数里做一些事情,什么时候做,在哪 ...

随机推荐

  1. ubuntu_24.04 Noble LTS安装docker desktop启动无窗口及引擎启动失败的解决方法

    ubuntu_24.04 LTS安装docker desktop启动无窗口及引擎启动失败的解决方法 1. 安装docker desktop后启动无窗口 现象: 执行sudo apt install . ...

  2. ITIL4之四维模型

    ITIL4的一个核心概念.它定义了四个维度(图中的1~4),这四个维度旨在确保组织能够在多方面考虑其服务提供,从而更有效地创造和交付价值. 四维模型的整合流程 确立价值载体:明确信息服务提供商的价值主 ...

  3. centos 7 开启 httpd 服务和 80 端口

    centos 7 开启 httpd 服务和 80 端口 yum install -y httpd systemctl start httpd firewall-cmd --add-service=ht ...

  4. linux终端显示git分支的配置

    1.查看现有配置 $ echo $PS1 2.显示git分支 打开./.bashrc文件 添加以下几行命令: git_branch() { git branch 2> /dev/null | s ...

  5. hashMap添加key重复时返回值的形式

    hashMap添加key重复 System.out.println(map.put(1, 0)); // null System.out.println(map.put(1, 1)); // 0 Sy ...

  6. 微信小程序订阅消息开发指南(java)

    微信小程序订阅消息开发指南(java) 第一步 准备阶段 1.你得有一个小程序,并且认证了,个人的也行 2.开通订阅消息 小程序后台->功能->订阅消息 3.公共模板库选择一个模板 选择的 ...

  7. 高效C#编程:通过智能线程池管理提升性能

    前言 C#编程中,线程池(Thread Pool)是一个重要的概念,它允许开发者更有效地管理和利用系统资源.通过线程池,我们可以避免频繁地创建和销毁线程,从而减少系统开销并提高程序的响应速度和吞吐量. ...

  8. 分布式任务调度内的 MySQL 分页查询优化

    作者:vivo 互联网数据库团队- Qiu Xinbo 本文主要通过图示介绍了用主键进行分片查询的过程,介绍了主键分页查询存在SQL性能问题,如何去创建高效的索引去优化主键分页查询的SQL性能问题.对 ...

  9. C# winfrom 局域网版多人成语接龙(二)

    功能基本上是完成了,要两个人完才好玩,目前 倒计时,每组游戏玩家数量这些控制变量,都是写死再代码里的,等以后想改的时候再改,这个项目核心的功能算是实现了,但还可以扩展,比如记录一下用户的游戏数据,答对 ...

  10. tkinter时钟(实时更新显示)

    from tkinter import * import time root = Tk() root.geometry('300x200') var = StringVar() def show(): ...