NuxtApp

在 Nuxt 中,您可以在组合函数、组件和插件中访问运行时应用上下文。

在 Nuxt 中,您可以在组合函数、组件和插件中访问运行时应用上下文。

在 Nuxt 2 中,这被称为 Nuxt 上下文

Nuxt App 接口

跳转查看 NuxtApp 接口文档。

Nuxt 上下文

许多组合函数和工具,无论是内置还是用户自定义,可能需要访问 Nuxt 实例。这个实例并不存在于应用的每个地方,因为每个请求都会创建一个新的实例。

目前,Nuxt 上下文仅在 插件Nuxt 钩子Nuxt 中间件(如果通过 defineNuxtRouteMiddleware 包装)以及 setup 函数(页面和组件中)可以访问。

如果在没有上下文访问权限的情况下调用组合函数,您可能会收到错误提示:“调用了一个需要访问 Nuxt 实例的组合函数,但该调用发生在插件、Nuxt 钩子、Nuxt 中间件或 Vue setup 函数之外。”在这种情况下,您也可以通过 nuxtApp.runWithContext 显式地在该上下文中调用函数。

访问 NuxtApp

在组合函数、插件和组件中,您可以通过 useNuxtApp() 访问 nuxtApp

composables/useMyComposable.ts
export function useMyComposable () {
  const nuxtApp = useNuxtApp()
  // 访问运行时 nuxt 应用实例
}

如果您的组合函数并不总是需要 nuxtApp,或者您只是想检查它是否存在,因为 useNuxtApp 会抛出异常,您可以改用 tryUseNuxtApp

插件中也会将 nuxtApp 作为第一个参数传入,使用起来更加方便。

Read more in Docs > Guide > Directory Structure > Plugins.

提供辅助方法

您可以提供辅助方法,使其在所有组合函数和应用中都可用。这通常在 Nuxt 插件中完成。

const nuxtApp = useNuxtApp()
nuxtApp.provide('hello', (name) => `Hello ${name}!`)

console.log(nuxtApp.$hello('name')) // 输出 "Hello name!"
在插件中,通过返回一个包含 provide 键的对象,可以注入辅助方法。
在 Nuxt 2 插件中,这被称为 inject 函数