返回介绍

useRuntimeConfig

发布于 2024-04-18 00:42:19 字数 2872 浏览 0 评论 0 收藏 0

可组合项用于在您的应用程序中公开配置变量。

使用方法

app.vue
<script setup lang="ts">
const config = useRuntimeConfig()
</script>
server/api/foo.ts
export default defineEventHandler((event) => {
  const config = useRuntimeConfig()
})

定义运行时配置

下面的示例显示了如何设置一个公共 API 基本 URL 和一个只能在服务器上访问的秘密 API 令牌。

我们应该始终在 nuxt.config 中定义 runtimeConfig 变量。

nuxt.config.ts
export default defineNuxtConfig({
  runtimeConfig: {
    // 私钥仅在服务器上可用
    apiSecret: '123',

    // 公开给客户端的公钥
    public: {
      apiBase: process.env.NUXT_PUBLIC_API_BASE || '/api'
    }
  }
})

需要在服务器上访问的变量直接添加到 runtimeConfig 中。
需要在客户端和服务器上都可以访问的变量在 runtimeConfig.public中定义。

相关阅读:going-further > runtime-config

访问运行时配置

要访问运行时配置,我们可以使用 useRuntimeConfig() 组合:

server/api/test.ts
export default async () => {
  const config = useRuntimeConfig()

  // 访问公共变量
  const result = await $fetch(`/test`, {
    baseURL: config.public.apiBase,
    headers: {
      // 访问私有变量(仅在服务器上可用)
      Authorization: `Bearer ${config.apiSecret}`
    }
  })
  return result
}

在此示例中,由于 apiBase 是在 public 命名空间中定义的,因此它可以在服务器端和客户端普遍访问,而 apiSecret 只能在服务器端访问

环境变量

可以使用前缀为NUXT_的匹配环境变量名称更新运行时配置值。

相关阅读:going-further > runtime-config

使用.env文件

Nuxt 在 runtime-config 中使用app命名空间,键包括baseURLcdnURL。 您可以通过设置环境变量在运行时自定义它们的值。

这是一个保留的命名空间。 你不应该在app中引入额外的键。

app.baseURL

默认情况下,baseURL设置为/

但是,可以通过将NUXT_APP_BASE_URL设置为环境变量来在运行时更新 baseURL

然后,您可以使用config.app.baseURL访问这个新的基本 URL:

/plugins/my-plugin.ts
export default defineNuxtPlugin((NuxtApp) => {
  const config = useRuntimeConfig()

  // 通用访问baseURL
  const baseURL = config.app.baseURL
})

app.cdnURL

此示例演示如何设置自定义 CDN url 并使用 useRuntimeConfig() 访问它们。

您可以使用自定义 CDN,使用NUXT_APP_CDN_URL环境变量在.output/public内提供静态资产。

然后使用 config.app.cdnURL 访问新的 CDN url。

server/api/foo.ts
export default defineEventHandler((event) => {
  const config = useRuntimeConfig()

  // 通用访问cdnURL
  const cdnURL = config.app.cdnURL
})
相关阅读:going-further > runtime-config

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文