生命周期钩子

Nuxt 提供了一个强大的钩子系统,可以使用钩子扩展几乎所有方面。
文档 > 4 X > 指南 > 进阶 > 钩子中阅读更多内容。

应用钩子 (运行时)

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

钩子参数环境描述
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:prefetch@BobbieGoede客户端当检测到<NuxtLink>被预取时调用。
page:startpageComponent?客户端SuspenseNuxtPage待处理事件中调用。
page:finishpageComponent?客户端SuspenseNuxtPage已解析事件中调用。
page:loading:start-客户端当新页面的setup()正在运行时调用。
page:loading:end-客户端page:finish之后调用。
page:transition:finishpageComponent?客户端页面过渡后onAfterLeave事件。
dev:ssr-logslogs客户端当服务器端日志数组传递给客户端时调用(如果启用了features.devLogs)。
page:view-transition:starttransition客户端实验性视图转换支持已启用时,在调用document.startViewTransition之后调用。

Nuxt 钩子 (构建时)

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

钩子参数描述
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 构建 manifest 期间调用。这允许自定义 Nitro 将用于在最终 HTML 中渲染<script><link>标签的 manifest。
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:contextcontextunimport上下文创建时调用。
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 默认配置。已弃用。 我们建议添加一个带有config钩子的 Vite 插件。
vite:configResolvedviteInlineConfig, env允许读取已解析的 Vite 配置。已弃用。 我们建议添加一个带有configResolved钩子的 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以获取所有可用的钩子。

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