Lifecycle Hooks

Nuxt provides a powerful hooking system to expand almost every aspect using hooks.
Read more in Docs > 4 X > Guide > Going Further > Hooks.

应用钩子(运行时)

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

HookArgumentsEnvironmentDescription
app:createdvueAppServer & Client在初始 vueApp 实例创建时调用。
app:errorerrServer & Client在发生致命错误时调用。
app:error:cleared{ redirect? }Server & Client在致命错误被清除时调用。
vue:setup-Server & Client在 Nuxt 根的 setup 初始化时调用。该回调必须是同步的。
vue:errorerr, target, infoServer & Client在 Vue 错误传播到根组件时调用。 了解更多
app:renderedrenderContextServer在 SSR 渲染完成后调用。
app:redirected-Server在 SSR 重定向之前调用。
app:beforeMountvueAppClient在挂载应用之前调用,仅在客户端调用。
app:mountedvueAppClient在 Vue 应用在浏览器中初始化并挂载完成时调用。
app:suspense:resolveappComponentClientSuspense 解析(resolved)事件时触发。
app:manifest:update{ id, timestamp }Client在检测到应用有新版本时调用。
app:data:refreshkeys?Client在调用 refreshNuxtData 时调用。
link:prefetchtoClient当观察到 <NuxtLink> 被预取时调用。
page:startpageComponent?ClientNuxtPage 内的 Suspense pending 事件时调用。
page:finishpageComponent?ClientNuxtPage 内的 Suspense resolved 事件时调用。
page:loading:start-Client当新页面的 setup() 正在运行时调用。
page:loading:end-Clientpage:finish 之后调用。
page:transition:finishpageComponent?Client在页面过渡的 onAfterLeave 事件之后调用。
dev:ssr-logslogsClient当有一组服务端日志被传递到客户端时调用(如果启用了 features.devLogs)。
page:view-transition:starttransitionClient在调用 document.startViewTransition 并启用了实验性的 viewTransition 支持后调用(见 /docs/4.x/getting-started/transitions#view-transitions-api-experimental)。

Nuxt 钩子(构建时)

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

HookArgumentsDescription
kit:compatibilitycompatibility, issues允许扩展兼容性检查。
readynuxt在 Nuxt 初始化后调用,当 Nuxt 实例已准备就绪。
closenuxt在 Nuxt 实例优雅关闭时调用。
restart{ hard?: boolean }用于重启当前 Nuxt 实例。
modules:before-在 Nuxt 初始化期间、安装用户模块之前调用。
modules:done-在 Nuxt 初始化期间、安装用户模块之后调用。
app:resolveapp在解析 app 实例后调用。
app:templatesapp在生成 NuxtApp 期间调用,允许自定义、修改或向构建目录添加新文件(可以是虚拟的或写入 .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在从文件系统扫描页面路由后调用。
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@nuxt/cli 写入 TypeScript 配置文件(如 .nuxt/tsconfig.app.json.nuxt/tsconfig.server.json 等)和 .nuxt/nuxt.d.ts 之前调用,允许在 nuxt.d.ts 中添加自定义引用和声明,或直接修改生成配置中的选项。
listenlistenerServer, listener在开发服务器加载时调用。
schema:extendschemas允许扩展默认 schema。
schema:resolvedschema允许扩展已解析的 schema。
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

HookArgumentsDescriptionTypes
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, unknown
afterResponseevent, { body }在发送响应之后调用。event, unknown