title: Nuxt.js必读:轻松掌握运行时配置与 useRuntimeConfig

date: 2024/7/29

updated: 2024/7/29

author: cmdragon

excerpt:

本文详细介绍了Nuxt.js中的运行时配置功能,包括定义和使用运行时配置的方法,以及如何通过useRuntimeConfig访问配置。同时,讲解了环境变量与.env文件的使用,特别是在不同环境下的配置管理。

categories:

  • 前端开发

tags:

  • Nuxt.js
  • 运行时配置
  • Vue.js
  • SSR
  • 环境变量
  • .env文件
  • useRuntimeConfig



扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长

Nuxt.js 是一个基于 Vue.js 的框架,它极大地简化了服务端渲染(SSR)和静态站点生成的开发过程。在 Nuxt.js 中,运行时配置是一个强大的功能,允许开发者根据不同的环境(如开发、生产等)动态地调整配置。

一、什么是运行时配置?

运行时配置是 Nuxt.js 中的一个特性,它允许你在不同的环境下使用不同的配置。例如,你可能需要在一个环境中使用一个 API 基础 URL,而在另一个环境中使用另一个 URL。运行时配置可以让你轻松实现这一点。

二、如何定义运行时配置?

在 Nuxt.js 中,你可以在 nuxt.config.ts 文件中定义运行时配置。以下是一个简单的例子:

export default defineNuxtConfig({
runtimeConfig: {
// 私有密钥,仅在服务器端可用
apiSecret: '123', // 公共密钥,可以在客户端和服务器端访问
public: {
apiBase: process.env.NUXT_PUBLIC_API_BASE || '/api'
}
}
})

在这个例子中,apiSecret 是一个私有密钥,仅在服务器端可用。apiBase 是一个公共密钥,可以在客户端和服务器端访问。

三、如何使用 useRuntimeConfig

useRuntimeConfig 是一个组合函数,用于在组件或 API 接口中访问运行时配置。以下是如何在组件中使用它的示例:

<template>
<div>
<h1>API Base URL: {{ config.public.apiBase }}</h1>
</div>
</template> <script>
export default {
setup() {
const config = useRuntimeConfig()
return {
config
}
}
}
</script>

在服务器端 API 中,你可以这样使用 useRuntimeConfig

export default defineEventHandler((event) => {
const config = useRuntimeConfig(event)
// 使用配置
})

四、环境变量与 .env 文件

你可以在 .env 文件中设置环境变量,以便在开发和构建过程中访问它们。例如:

NUXT_PUBLIC_API_BASE = "https://api.localhost:5555"
NUXT_API_SECRET = "123"

这些变量可以通过 process.env 在 Nuxt 应用中访问。

生产运行时中,你应该使用平台的环境变量配置,而不是使用 .env 文件。在构建完成后,当你运行服务器时,.env 文件将不会被读取。具体如何设置环境变量取决于你的环境。

五、 app 命名空间

在Nuxt.js中,app命名空间是用于存储一些特定的运行时配置的,这些配置通常与应用的全局行为和设置相关。在app命名空间中,有两个重要的键:baseURL和cdnURL。

1. app.baseURL

作用app.baseURL 是一个用于存储应用的根URL的键。默认情况下,这个值被设置为'/'。这个键主要用于在应用中统一处理URL的前缀,例如在API调用、路由链接、静态资源访问等场景中。

如何使用

// 在你的组件中访问baseURL
export default {
setup() {
const config = useRuntimeConfig()
console.log('Base URL:', config.app.baseURL)
}
}

2. app.cdnURL

作用app.cdnURL 是一个用于存储CDN(内容分发网络)URL的键。这个键主要用于在生产环境中,当应用使用CDN来加速静态资源的加载时,提供一个自定义的CDN URL。在开发环境中,这个值通常被设置为空字符串或者默认值。

如何使用

// 在你的API服务中访问cdnURL
export default defineEventHandler((event) => {
const config = useRuntimeConfig()
const cdnURL = config.app.cdnURL
console.log('CDN URL:', cdnURL)
})

设置环境变量

为了在运行时自定义这些值,你可以通过设置环境变量来实现。例如,为了改变app.baseURL,你可以在.env文件中添加:

NUXT_APP_BASE_URL=https://your-custom-base-url.com

对于app.cdnURL,你可以在.env文件中添加:

NUXT_APP_CDN_URL=https://your-custom-cdn-url.com

示例代码

假设你有一个plugins/my-plugin.ts文件,你想要在其中使用app.baseURL

export default defineNuxtPlugin((NuxtApp) => {
const config = useRuntimeConfig()
const baseURL = config.app.baseURL
console.log('Using base URL:', baseURL)
})

对于server/api/foo.ts中的app.cdnURL

export default defineEventHandler((event) => {
const config = useRuntimeConfig()
const cdnURL = config.app.cdnURL
console.log('Using CDN URL:', cdnURL)
})

通过这种方式,你可以确保在不同的环境(如开发、测试、生产)中,应用能够使用不同的配置,从而提高应用的灵活性和可维护性。

余下文章内容请点击跳转至 个人博客页面 或者 扫码关注或者微信搜一搜:编程智域 前端至全栈交流与成长,阅读完整的文章:Nuxt.js必读:轻松掌握运行时配置与 useRuntimeConfig | cmdragon's Blog

往期文章归档:

Nuxt.js必读:轻松掌握运行时配置与 useRuntimeConfig的更多相关文章

  1. Xcode 运行时配置

    有时候,我们的app在测试时需要连接到一个testing服务器,在打包为企业证书的app时又需要连接到另一个ad hoc 服务器,或者我们想企业证书打包的app和debug模式打包的app有不同的AP ...

  2. Laravel 使用 Provider 为程序提供运行时配置服务

    需求: 配置参数存在数据库中,Model 是 aah,需要在每次运行时,程序可以在任何地方采用 config("aah.name") 的方式访问配置信息. 思路: 采用 Provi ...

  3. opcache运行时配置参数详解

    PHP的opcode缓存又出 了新成员(说新不新,也有一段日子了),那就是opcache.新浪微博等都在使用,惠新宸老师强力推荐.本人最近根据官网地址 (http://www.php.net/manu ...

  4. 使用nuxt.js官方脚手架构建项目时ES6编译问题SyntaxError: Unexpected token import

    用nuxt集成koa2做vue后台,官方自带脚手架搭建的koa2仍是ES5语法,在构建koa2时默认的nodemon是没有使用babel编译的, 所以首先需要在启动命令后加上--exec babel- ...

  5. fn project 运行时配置选项

    Env Variables Description Default values DB_URL The database URL to use in URL format. SeeDatabases  ...

  6. ETCD:运行时重新配置

    原文地址:runtime reconfiguration etcd带有增量运行时重新配置的支持.允许我们在集群运行的时候更新集群成员关系. 仅当大多数集群成员都在运行时,才能处理重新配置请求,强烈建议 ...

  7. ETCD:运行时重新配置设计

    原文地址:the runtime configuration design 运行时重新配置是分布式系统中最难,最容易出错的部分,尤其是在基于共识(像etcd)的系统中. 阅读并学习关于etcd的运行时 ...

  8. DevExpres表格控件运行时动态设置表格列

    本文是系列文章,陆续发表于电脑编程技巧与维护杂志. DevExpres产品是全球享有极高声誉的一流控件套包产品!国内典型用户包括:用友.金蝶.神州数码.工信部.中国石化.汉王科技等众多大中型科技型企业 ...

  9. SET - 改变运行时参数

    樊伟胜SYNOPSIS SET [ SESSION | LOCAL ] name { TO | = } { value | 'value' | DEFAULT } SET [ SESSION | LO ...

  10. 浅析容器运行时奥秘——OCI标准

    背景 2013年Docker开源了容器镜像格式和运行时以后,为我们提供了一种更为轻量.灵活的"计算.网络.存储"资源虚拟化和管理的解决方案,在业界迅速火了起来. 2014年更是容器 ...

随机推荐

  1. itestwork(爱测试) 开源一站式接口测试&敏捷测试工作站 9.0.2Rc2发布

    (一)itest 简介 itest work (爱测试)  一站式工作站让测试变得简单.敏捷,"好用.好看,好敏捷" ,是itest wrok 追求的目标.itest work 包 ...

  2. 利用QEMU模拟大端序机器

    简介 当前我们安装虚拟机,一般小端机器比较多,有时候想模拟大端机器测试程序,这时就有模拟大端机器的需求. 参考:利用 QEMU USER 模式运行 mips 程序 - sinpo828 - 博客园 ( ...

  3. 使用C代码实现读取文件中的hex字符串,转换为字节数组

    举例说明: ptp.txt文件中的内容为: 7a7ac0a8c80100000000003388f70002002c000004000000000000000000000000000000000000 ...

  4. c#WinFrom自定义图表仪表控件-频谱

    这是为客户定制的一个频谱图表控件,先看下成品效果,gif较大,略等片刻 开发步骤分析: 1.界面有多个间距不等的线分割的区域,每个区域的值范围不同,我们就需要把每个区域定义出来,方便我们操作的时候来计 ...

  5. P9174

    problem & blog 子任务 \(1\) 和子任务 \(2\) 都比较好做.所以我们这里不讲. 状态将是数字 \(n\) (每个颜色的频率的排序数组)的所有分区,因为当我们旋转每种颜色 ...

  6. OpenSpeedTest-Server局域网速度测试服务程序

    OpenSpeedTest-Server局域网速度测试服务程序,局域网测速.

  7. 手摸手教你把Ingress Nginx集成进Skywalking

    背景 在微服务大行其道的今天,如何观测众多微服务.快速理清服务间的依赖.如何对服务之间的调用性能进行衡量,成了摆在大家面前的难题.对此,Skywalking应运而生,它是托管在 Apache 基金会下 ...

  8. EBLK日志收集方案

    ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch.Logstash 和 Kibana.该组合版本会统一发布. Elast ...

  9. java8 Lambda及Stream学习笔记

    Lambda表达式Lambda 表达式可以替代只有一个抽象函数的接口实现. Lambda表达式同时还提升了对集合.框架的迭代.遍历.过滤数据的操作. Lambda表达式使用场景任何有函数式接口的地方 ...

  10. azure 代码管理器网址

    visual studio 团队资源管理器 azure代码管理网页 记录一下 https://dev.azure.com