Nuxt.js必读:轻松掌握运行时配置与 useRuntimeConfig
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 路由管理:useRouter 方法与路由中间件应用 | cmdragon's Blog
- useRoute 函数的详细介绍与使用示例 | cmdragon's Blog
- 使用 useRequestURL 组合函数访问请求URL | cmdragon's Blog
- Nuxt.js 环境变量配置与使用 | cmdragon's Blog
- 服务端渲染中的数据获取:结合 useRequestHeaders 与 useFetch | cmdragon's Blog
- 使用 useRequestEvent Hook 访问请求事件 | cmdragon's Blog
- 使用 useNuxtData 进行高效的数据获取与管理 | cmdragon's Blog
- Nuxt 3 使用指南:掌握 useNuxtApp 和运行时上下文 | cmdragon's Blog
- 使用 useLazyFetch 进行异步数据获取 | cmdragon's Blog
- 使用 useLazyAsyncData 提升数据加载体验 | cmdragon's Blog
- Nuxt.js 中使用 useHydration 实现数据水合与同步 | cmdragon's Blog
- useHeadSafe:安全生成HTML头部元素 | cmdragon's Blog
- Nuxt.js头部魔法:轻松自定义页面元信息,提升用户体验 | cmdragon's Blog
- 探索Nuxt.js的useFetch:高效数据获取与处理指南 | cmdragon's Blog
- Nuxt.js 错误侦探:useError 组合函数 | cmdragon's Blog
- useCookie函数:管理SSR环境下的Cookie | cmdragon's Blog
- 轻松掌握useAsyncData获取异步数据 | cmdragon's Blog
Nuxt.js必读:轻松掌握运行时配置与 useRuntimeConfig的更多相关文章
- Xcode 运行时配置
有时候,我们的app在测试时需要连接到一个testing服务器,在打包为企业证书的app时又需要连接到另一个ad hoc 服务器,或者我们想企业证书打包的app和debug模式打包的app有不同的AP ...
- Laravel 使用 Provider 为程序提供运行时配置服务
需求: 配置参数存在数据库中,Model 是 aah,需要在每次运行时,程序可以在任何地方采用 config("aah.name") 的方式访问配置信息. 思路: 采用 Provi ...
- opcache运行时配置参数详解
PHP的opcode缓存又出 了新成员(说新不新,也有一段日子了),那就是opcache.新浪微博等都在使用,惠新宸老师强力推荐.本人最近根据官网地址 (http://www.php.net/manu ...
- 使用nuxt.js官方脚手架构建项目时ES6编译问题SyntaxError: Unexpected token import
用nuxt集成koa2做vue后台,官方自带脚手架搭建的koa2仍是ES5语法,在构建koa2时默认的nodemon是没有使用babel编译的, 所以首先需要在启动命令后加上--exec babel- ...
- fn project 运行时配置选项
Env Variables Description Default values DB_URL The database URL to use in URL format. SeeDatabases ...
- ETCD:运行时重新配置
原文地址:runtime reconfiguration etcd带有增量运行时重新配置的支持.允许我们在集群运行的时候更新集群成员关系. 仅当大多数集群成员都在运行时,才能处理重新配置请求,强烈建议 ...
- ETCD:运行时重新配置设计
原文地址:the runtime configuration design 运行时重新配置是分布式系统中最难,最容易出错的部分,尤其是在基于共识(像etcd)的系统中. 阅读并学习关于etcd的运行时 ...
- DevExpres表格控件运行时动态设置表格列
本文是系列文章,陆续发表于电脑编程技巧与维护杂志. DevExpres产品是全球享有极高声誉的一流控件套包产品!国内典型用户包括:用友.金蝶.神州数码.工信部.中国石化.汉王科技等众多大中型科技型企业 ...
- SET - 改变运行时参数
樊伟胜SYNOPSIS SET [ SESSION | LOCAL ] name { TO | = } { value | 'value' | DEFAULT } SET [ SESSION | LO ...
- 浅析容器运行时奥秘——OCI标准
背景 2013年Docker开源了容器镜像格式和运行时以后,为我们提供了一种更为轻量.灵活的"计算.网络.存储"资源虚拟化和管理的解决方案,在业界迅速火了起来. 2014年更是容器 ...
随机推荐
- firewall防火墙基础配置
Firewalld防火墙 Centos7 中集成了防火墙管理工具, Firewall系统动态防火墙管理器是作为默认的防火墙工具. 它支持规则动态更新,并加入zone区域概念. Firewalld防火墙 ...
- Qt_Demo_1:实现一个简易的记事本
1 环境: 系统:windows 10 代码编写运行环境:Qt Creator 4.4.1 (community) GitHub:https://github.com/zhengcixi/Qt_De ...
- 关于 cnblogs 中的神秘操作
关于 cnblogs 中的神秘操作 批量替换 利用 metaweblog 批量操作 代码参考:jeefies - jcnapi 不是很完整 其中 BLOGS_BLOGID 指的是 https://ww ...
- INFINI Labs 产品更新 | Agent 全新重构,优化指标采集,支持集中配置管理,支持动态下发等功能
INFINI Labs 产品又更新啦~ 本次更新主要有 Agent.Console.Loadgen 等产品,其中 Agent 进行全新重构升级,新版限制了 CPU 资源消耗,优化了内存,相比旧版内存使 ...
- JAVA RSA 私钥签名 公钥验证签名 公钥验签
JAVA RSA 私钥签名 公钥验证签名 公钥验签 1.待签名字符串转为byte数组时,一般使用UTF8. 2.将私钥字符串(PKCS8格式)转为PKCS8EncodedKeySpec对象. 3.使用 ...
- django通过channels实现websocket
WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工(full-duplex ...
- 《Android开发卷——自定义日期选择器(二)》
(小米手机) (中兴手机) 在上一篇中,我介绍了一般公司都会自定义时间日期选择器,并结合自己所做的项目给大家参考. 工作实录之<Android开发卷--自定义日期选择器(一)>链接:htt ...
- 使用vscode写Markdown并且导出为pdf(干货)
目录 序言 下载vscode 安装插件 markdown语法 导出为pdf 序言 大家在学习过程中都会有记笔记的好习惯(美观的笔记当然是上上选),于是,Markdown就是一个不错的选择,待会也会附上 ...
- kylin的除法函数的坑
1.select 1/6 (整数相除除不过直接就为0) 解决办法:select cast(1 as double)/6 2.select round (0/6,2) (0除以任何数都是0,无法 ...
- python Django项目以Debug模式启动和外网访问启动
一.Django介绍 介绍: 完善的web框架,包括前端和后端的管理,django项目管理: 管理后台访问:后面补充 前端页面访问:根据app/settings.py文件下配置的访问地址 1.1 项目 ...