生命周期钩子

Nuxt 提供了一个强大的钩子系统,可以使用钩子来扩展几乎所有方面。
Read more in Docs > Guide > Going Further > Hooks.

应用钩子(运行时)

¥App Hooks (runtime)

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

¥Check the app source code for all available hooks.

钩子参数环境描述
app:createdvueApp服务器和客户端当创建初始 vueApp 实例时调用。
app:errorerr服务器和客户端在发生致命错误时调用。
app:error:cleared{ redirect? }服务器和客户端在发生致命错误时调用。
vue:setup*服务器和客户端当初始化 Nuxt 根组件的设置完成时调用。此回调必须是同步的。
vue:errorerr, target, info服务器和客户端当 Vue 错误传播到根组件时调用。了解更多
app:renderedrenderContext服务器在 SSR 渲染完成时调用。
app:redirected*服务器在 SSR 重定向之前调用。
app:beforeMountvueApp客户端在安装应用之前调用,仅在客户端调用。
app:mountedvueApp客户端在 Vue 应用初始化并挂载到浏览器中时调用。
app:suspense:resolveappComponent客户端Suspense 事件已解析。
app:manifest:update{ id, timestamp }客户端当检测到应用的更新版本时调用。
app:data:refreshkeys?客户端在调用 refreshNuxtData 时调用。
link:prefetchto客户端在观察到 <NuxtLink> 被预加载时调用。
page:startpageComponent?客户端NuxtPage pending 事件内,在 Suspense 上调用。
page:finishpageComponent?客户端NuxtPage resolve 事件内,在 Suspense 上调用。
page:loading:start*客户端当新页面的 setup() 运行时调用。
page:loading:end*客户端page:finish 之后调用
page:transition:finishpageComponent?客户端页面转换 onAfterLeave 事件后。
dev:ssr-logslogs客户端使用已传递给客户端的服务器端日志数组进行调用(如果启用了 features.devLogs)。
page:view-transition:starttransition客户端document.startViewTransition已启用实验性 viewTransition 支持 调用后调用。

Nuxt Hooks(构建时)

¥Nuxt Hooks (build time)

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

¥Check the schema source code for all available hooks.

钩子参数描述
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 bundle 构建器之前调用。
build:done*在 Nuxt bundle 构建器完成后调用。
build:manifestmanifest在 Vite 和 webpack 构建清单文件时调用。这允许自定义 Nitro 在最终 HTML 中渲染 <script><link> 标签时使用的清单。
builder:generateAppoptions在生成应用之前调用。
builder:watchevent, path在开发构建时,当监视器发现项目中的文件或目录发生更改时调用。
pages:extendpages在从文件系统扫描页面路由后调用。
pages:resolvedpages在页面路由已使用扫描到的元数据进行扩充后调用。
pages:routerOptions{ files: Array<{ path: string, optional?: boolean }> }当解析 router.options 文件时调用。数组中后面的项会覆盖前面的项。
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 之前调用。
schema:written*Schema 写入后调用。
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 应用钩子(运行时、服务器端)

¥Nitro App Hooks (runtime, server-side)

有关所有可用钩子,请参阅 Nitro

¥See Nitro for all available hooks.

钩子参数描述类型
dev:ssr-logs{ path, logs }服务器在请求周期结束时调用,并传入一个服务器端日志数组。
render:responseresponse, { event }在发送响应之前调用。response, event
render:htmlhtml, { event }在构建 HTML 之前调用。html, event
render:islandislandResponse, { event, islandContext }在构建 island HTML 之前调用。islandResponse, event, islandContext
close*在 Nitro 关闭时调用。*
errorerror, { event? }当发生错误时调用。error, event
requestevent在收到请求时调用。event
beforeResponseevent, { body }在发送响应之前调用。event,未知
afterResponseevent, { body }发送响应后调用。event,未知