Nuxt3 中文课程 《实战全栈开发简书》.

生命周期钩子

Nuxt 提供了一个强大的钩子系统,可以使用钩子来扩展几乎所有方面。

Read more in Docs > Guide > Going Further > Hooks.

应用程序钩子(运行时)

查看应用程序源代码以获取所有可用的钩子。

钩子参数环境描述
app:createdvueApp服务器端和客户端在初始 vueApp 实例创建时调用。
app:errorerr服务器端和客户端在发生致命错误时调用。
app:error:cleared{ redirect? }服务器端和客户端在发生致命错误时调用。
app:data:refreshkeys?服务器端和客户端(内部)
vue:setup-服务器端和客户端(内部)
vue:errorerr, target, info服务器端和客户端当 vue 错误传播到根组件时调用。了解更多
app:renderedrenderContext服务器端在 SSR 渲染完成时调用。
app:redirected-服务器端在 SSR 重定向之前调用。
app:beforeMountvueApp客户端端在应用程序挂载之前调用,仅在客户端端调用。
app:mountedvueApp客户端端在 Vue 应用程序初始化并在浏览器中挂载时调用。
app:suspense:resolveappComponent客户端端Suspense 解析事件上调用。
link:prefetchto客户端端当观察到 <NuxtLink> 被预取时调用。
page:startpageComponent?客户端端Suspense 挂起事件上调用。
page:finishpageComponent?客户端端Suspense 解析事件上调用。
page:transition:finishpageComponent?客户端端在页面过渡的 onAfterLeave 事件之后调用。

Nuxt 钩子(构建时)

查看模式源代码以获取所有可用的钩子。

钩子参数描述
kit:compatibilitycompatibility, issues允许扩展兼容性检查。
readynuxt在 Nuxt 初始化完成后调用,当 Nuxt 实例准备好工作时。
closenuxt在 Nuxt 实例正常关闭时调用。
restart{ hard?: boolean }用于重启当前的 Nuxt 实例。
modules:before-在 Nuxt 初始化期间,在安装用户模块之前调用。
modules:done-在 Nuxt 初始化期间,在安装用户模块之后调用。
app:resolveapp在解析 app 实例之后调用。
app:templatesappNuxtApp 生成过程中调用,允许自定义、修改或添加新文件到构建目录(无论是虚拟的还是写入到 .nuxt 目录中)。
app:templatesGeneratedapp在模板编译到虚拟文件系统(vfs)之后调用。
build:before-在 Nuxt 打包构建器之前调用。
build:done-在 Nuxt 打包构建器完成后调用。
build:manifestmanifest在 Vite 和 webpack 构建清单期间调用。这允许自定义 Nitro 在最终 HTML 中渲染 <script><link> 标签所使用的清单。
builder:generateAppoptions在生成应用程序之前调用。
builder:watchevent, path在开发环境的构建过程中,当监视器检测到项目中的文件或目录发生变化时调用。
pages:extendpages在页面路由解析完成后调用。
server:devHandlerhandler在 Nitro 开发服务器注册开发中间件时调用。
imports:sourcespresets在设置过程中调用,允许模块扩展源。
imports:extendimports在设置过程中调用,允许模块扩展导入。
imports:contextcontext在创建 unimport 上下文时调用。
imports:dirsdirs允许扩展导入目录。
components:dirsdirsapp:resolve 中调用,允许扩展自动导入组件的目录。
components:extendcomponents允许扩展新组件。
nitro:confignitroConfig在初始化 Nitro 之前调用,允许自定义 Nitro 的配置。
nitro:initnitro在 Nitro 初始化完成后调用,允许注册 Nitro 钩子并直接与 Nitro 进行交互。
nitro:build:beforenitro在构建 Nitro 实例之前调用。
nitro:build:public-assetsnitro在复制公共资产之后调用。允许在构建 Nitro 服务器之前修改公共资产。
prerender:routesctx允许扩展要预渲染的路由。
build:errorerror在构建时发生错误时调用。
prepare:typesoptions在 Nuxi 写入 .nuxt/tsconfig.json.nuxt/nuxt.d.ts 之前调用,允许在 nuxt.d.ts 中添加自定义引用和声明,或直接修改 tsconfig.json 中的选项。
listenlistenerServer, listener在开发服务器加载时调用。
schema:extendschemas允许扩展默认模式。
schema:resolvedschema允许扩展已解析的模式。
schema:beforeWriteschema在写入给定模式之前调用。
schema:written-在模式写入完成后调用。
vite:extendviteBuildContext允许扩展 Vite 默认上下文。
vite:extendConfigviteInlineConfig, env允许扩展 Vite 默认配置。
vite:configResolvedviteInlineConfig, env允许读取已解析的 Vite 配置。
vite:serverCreatedviteServer, env在 Vite 服务器创建时调用。
vite:compiled-在 Vite 服务器编译完成后调用。
webpack:configwebpackConfigs在配置 webpack 编译器之前调用。
webpack:configResolvedwebpackConfigs允许读取已解析的 webpack 配置。
webpack:compileoptions在编译之前调用。
webpack:compiledoptions在资源加载完成后调用。
webpack:changeshortPath在 WebpackBar 上的 change 事件上调用。
webpack:error-在 WebpackBar 上的 done 事件中,如果有错误则调用。
webpack:done-在 WebpackBar 上的 allDone 事件上调用。
webpack:progressstatesArray在 WebpackBar 上的 progress 事件上调用。

Nitro 应用程序钩子(运行时,服务器端)

钩子参数描述类型
render:responseresponse, { event }在发送响应之前调用。response, event
render:htmlhtml, { event }在构建 HTML 之前调用。html, event
render:islandislandResponse, { event, islandContext }在构建岛屿 HTML 之前调用。islandResponse, event, islandContext