NuxtApp

源文件
在 Nuxt 中,您可以在组合函数 (composables)、组件 (components) 和插件 (plugins) 中访问运行时应用上下文 (runtime app context)。

在 Nuxt 中,您可以在组合函数 (composables)、组件 (components) 和插件 (plugins) 中访问运行时应用上下文 (runtime app context)。

在 Nuxt 2 中,这被称为 **Nuxt context**(Nuxt 上下文)。

Nuxt App 接口

跳转到 NuxtApp 接口文档。

Nuxt Context

许多内置的和用户自定义的组合函数和工具可能需要访问 Nuxt 实例。它并非在您的应用程序中随处可用,因为每次请求都会创建一个新的实例。

当前,Nuxt context 仅在 插件Nuxt hooks(钩子)、Nuxt 中间件(如果被 defineNuxtRouteMiddleware 包裹)和setup 函数(在页面和组件中)中可访问。

如果一个组合函数在没有上下文访问权限的情况下被调用,您可能会收到一条错误消息,说明“调用了一个需要访问 Nuxt 实例的组合函数,但它不在插件、Nuxt hook、Nuxt 中间件或 Vue setup 函数中。” 在这种情况下,您也可以使用 nuxtApp.runWithContext 来明确调用此上下文中的函数。

访问 NuxtApp

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

app/composables/useMyComposable.ts
export function useMyComposable () {
  const nuxtApp = useNuxtApp()
  // access runtime nuxt app instance
}

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

为了方便起见,插件也会将 nuxtApp 作为第一个参数接收。

在 **文档 > 4 X > 目录结构 > App > 插件** 中阅读更多内容。

提供辅助函数

您可以提供辅助函数 (helpers) 以在所有组合函数和应用程序中都可用。这通常在 Nuxt 插件中完成。

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

console.log(nuxtApp.$hello('name')) // Prints "Hello name!"
可以通过在插件中返回一个带有 provide 键的对象来注入辅助函数。
在 Nuxt 2 插件中,这被称为 **inject function**(注入函数)。