在 Vue 3 中,怎么管理环境变量

在 Vue 3 中,环境变量管理是通过 .env 文件来进行的,利用这些文件可以让开发者根据不同的环境(开发、生产、测试等)配置不同的变量。这一机制由 Vite 构建工具支持,它帮助开发者根据不同的环境需求做出相应配置。

1. 环境变量的基本概念

在前端开发中,环境变量通常用于存储配置信息、密钥、API 地址等,这些信息可能会因不同的部署环境而有所不同。通过 .env 文件,开发者可以确保在开发环境、生产环境等不同环境下使用不同的配置,而无需手动修改代码。

2. .env 文件的结构

2.1 文件命名规则

Vue 3 使用 Vite 作为构建工具,Vite 支持多种环境变量文件,文件的命名规则如下:

  • .env: 默认的环境配置文件,会在所有环境中加载。
  • .env.local: 用于本地开发的配置,不应被版本控制追踪。它的优先级高于 .env。
  • .env.development: 用于开发环境的配置文件。
  • .env.production: 用于生产环境的配置文件。
  • .env.test: 用于测试环境的配置文件。
  • .env.[mode].local: 对于特定环境的本地配置文件,优先级最高。

当你运行 vite 时,Vite 会根据不同的构建模式来加载相应的环境变量文件。

2.2 环境变量的命名规范

Vite 只会暴露以 VITE_ 为前缀的环境变量,避免泄露敏感数据。对于没有 VITE_ 前缀的环境变量,它们不会暴露到客户端代码中,从而保护服务器端的敏感信息。

例子:

正确的命名:VITE_API_URL=https://api.example.com
错误的命名(不会暴露):API_KEY=abcdef12345

3. 设置 .env 文件

3.1 基本环境变量设置

你可以在 .env 文件中设置一些通用的环境变量,比如 API 的 URL、应用标题、版本号等。

示例 .env 文件:

VITE_API_URL=https://api.example.com
VITE_APP_TITLE=Vue App
VITE_VERSION=1.0.0

3.2 环境特定的设置

Vite 允许你根据不同的环境设置不同的变量。例如,你可以为开发环境、生产环境设置不同的 API 地址。

示例 .env.development 文件:

VITE_API_URL=http://localhost:3000
VITE_APP_TITLE=Vue Dev App

示例 .env.production 文件:

VITE_API_URL=https://prod.api.example.com
VITE_APP_TITLE=Vue Production App

4. 使用环境变量

在 Vue 3 中,你可以通过 import.meta.env 来访问这些环境变量。通过这种方式,你可以在代码中动态地使用不同环境下的配置。

在 JavaScript/TypeScript 中使用环境变量
你可以直接通过 import.meta.env 访问环境变量的值,例如:

// src/main.js
console.log(import.meta.env.VITE_API_URL);  // 访问 API URL
console.log(import.meta.env.VITE_APP_TITLE); // 访问应用标题

在 Vue 组件中使用环境变量
你也可以在 Vue 单文件组件中使用环境变量。举个例子:

<template><div><h1>{{ appTitle }}</h1><p>{{ apiUrl }}</p></div>
</template><script setup>
const appTitle = import.meta.env.VITE_APP_TITLE;
const apiUrl = import.meta.env.VITE_API_URL;
</script>

使用条件判断环境变量
你可以通过环境变量来实现条件判断,根据不同的环境加载不同的功能:

if (import.meta.env.MODE === 'development') {console.log('This is the development environment.');
}

5. 切换环境

Vite 允许你通过设置不同的构建模式来切换环境。你可以通过以下命令来指定使用哪种环境:

  • 开发环境:运行 vite 或 npm run dev,默认使用 .env.development 或 .env。
  • 生产环境:运行 vite build 或 npm run build,会使用 .env.production 或 .env。
  • 测试环境:运行 vite build --mode test,它会加载 .env.test 配置。

你还可以通过命令行参数来指定特定的环境:

vite --mode production  # 启动生产环境
vite --mode development  # 启动开发环境

6. 优先级规则

Vite 会根据不同文件的优先级来加载 .env 文件。加载优先级从高到低如下:

  • .env.local: 本地开发环境使用的配置文件,优先级最高。
  • .env.[mode].local: 特定环境的本地配置文件,优先级高于 .env.[mode]。
  • .env: 默认的环境配置文件,适用于所有环境。
  • .env.[mode]: 特定环境的配置文件,优先级低于 .env.local 和 .env.[mode].local。

7 案例

假设我们有以下需求:

  • 在 开发环境(local)使用 http://localhost:3000 作为 API 地址。
  • 在 生产环境(production)使用 https://api.example.com 作为 API 地址。
  • 应用标题 VITE_APP_TITLE 在不同环境下应该有所不同。
  1. 创建 .env 文件
    首先,创建基础的 .env 文件,并设置默认的环境变量:

.env(默认环境):

VITE_APP_TITLE=Vue Default App
VITE_API_URL=https://api.example.com

这个配置会作为默认设置,适用于没有特定环境标识时的情况。

  1. 创建开发环境和生产环境配置文件
    接下来,为开发环境和生产环境分别创建配置文件。可以使用 .env.development 和 .env.production 来覆盖 .env 文件中的配置。

.env.development(开发环境配置)

VITE_APP_TITLE=Vue Dev App
VITE_API_URL=http://localhost:3000

.env.production(生产环境配置)

VITE_APP_TITLE=Vue Production App
VITE_API_URL=https://api.example.com
  1. 在 Vue 3 组件中使用环境变量
    接下来,在 Vue 3 应用中使用这些环境变量。我们可以通过 import.meta.env 来读取环境变量。
    src/App.vue(Vue 组件)
<template><div><h1>{{ appTitle }}</h1><p>API URL: {{ apiUrl }}</p></div>
</template><script setup>
const appTitle = import.meta.env.VITE_APP_TITLE;
const apiUrl = import.meta.env.VITE_API_URL;
</script><style scoped>
h1 {color: #42b983;
}
</style>

在这个 Vue 组件中,我们通过 import.meta.env.VITE_APP_TITLE 和 import.meta.env.VITE_API_URL 获取并显示环境变量的值。

  1. 启动应用并测试
  2. 开发环境
    当我们在开发环境中运行应用时,Vite 会加载 .env.development 文件中的变量。我们可以通过以下命令启动开发服务器:
    这时,页面会显示如下内容:
Vue Dev App
API URL: http://localhost:3000
  1. 生产环境
    在生产环境中,Vite 会加载 .env.production 文件中的变量。要进行生产环境构建并启动,可以运行以下命令:
npm run build  # 构建生产环境
npm run preview  # 预览生产环境

这时,页面会显示如下内容:

Vue Production App
API URL: https://api.example.com

通过 .env 文件,你可以轻松管理 Vue 3 应用中的环境配置。你可以为不同的环境(开发、生产、测试等)设置不同的变量,并通过 import.meta.env 访问这些变量。Vite 的强大之处在于它提供了灵活的配置机制,帮助开发者快速适应不同环境下的需求。在使用 .env 文件时要特别注意敏感数据的处理,避免将敏感信息暴露到前端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7353.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国认知作战研究中心:从认知战角度分析2007年iPhone发布

中国认知作战研究中心&#xff1a;从认知战角度分析2007年iPhone发布 中国认知作战研究中心&#xff1a;从认知战角度分析2007年iPhone发布 关键词 认知作战,新质生产力,人类命运共同体,认知战,认知域,认知战研究中心,认知战争,认知战战术,认知战战略,认知域作战研究,认知作…

Chameleon(变色龙) 跨平台编译C文件,并一次性生成多个平台的可执行文件

地址:https://github.com/MartinxMax/Chameleon Chameleon 跨平台编译C文件&#xff0c;并一次性生成多个平台的可执行文件。可以通过编译Chameleon自带的.C文件反向Shell生成不同平台攻击载荷。 登录 & 代理设置 按照以下步骤设置 Docker 的代理&#xff1a; 创建配置目…

【机器学习】穷理至极,观微知著:微积分的哲思之旅与算法之道

文章目录 微积分基础&#xff1a;理解变化与累积的数学前言一、多重积分的高级应用1.1 高维概率分布的期望值计算1.1.1 多维期望值的定义1.1.2 Python代码实现1.1.3 运行结果1.1.4 结果解读 1.2 特征空间的体积计算1.2.1 单位球体的体积计算1.2.2 Python代码实现1.2.3 运行结果…

Kubernetes可视化界面

DashBoard Kubernetes Dashboard 是 Kubernetes 集群的一个开箱即用的 Web UI&#xff0c;提供了一种图形化的方式来管理和监视 Kubernetes 集群中的资源。它允许用户直接在浏览器中执行许多常见的 Kubernetes 管理任务&#xff0c;如部署应用、监控应用状态、执行故障排查以及…

【转帖】eclipse-24-09版本后,怎么还原原来版本的搜索功能

【1】原贴地址&#xff1a;eclipse - 怎么还原原来版本的搜索功能_eclipse打开类型搜索类功能失效-CSDN博客 https://blog.csdn.net/sinat_32238399/article/details/145113105 【2】原文如下&#xff1a; 更新eclipse-24-09版本后之后&#xff0c;新的搜索功能&#xff08;CT…

常见的多媒体框架(FFmpeg GStreamer DirectShow AVFoundation OpenMax)

1.FFmpeg FFmpeg是一个非常强大的开源多媒体处理框架&#xff0c;它提供了一系列用于处理音频、视频和多媒体流的工具和库。它也是最流行且应用最广泛的框架&#xff01; 官方网址&#xff1a;https://ffmpeg.org/ FFmpeg 的主要特点和功能&#xff1a; 编解码器支持: FFmpe…

Pyecharts之饼图与多饼图的应用

在数据可视化领域&#xff0c;饼图是一种常用的图表类型&#xff0c;特别适合展示数据的比例关系。Pyecharts 为我们提供了强大的饼图绘制功能&#xff0c;不仅可以轻松绘制各种饼图&#xff0c;还能对饼图的样式和数据标签进行深度定制&#xff0c;并且可以组合多个饼图以满足…

华为数据之道-读书笔记

内容简介 关键字 数字化生产 已经成为普遍的商业模式&#xff0c;其本质是以数据为处理对象&#xff0c;以ICT平台为生产工具&#xff0c;以软件为载体&#xff0c;以服务为目的的生产过程。 信息与通信技术平台&#xff08;Information and Communication Technology Platf…

rocketmq-product-send方法源码分析

先看有哪些send方法 首先说红圈的 有3个红圈。归类成3种发送方式。假设前提条件&#xff0c;发送的topic&#xff0c;有3个broker&#xff0c;每个broker总共4个write队列&#xff0c;总共有12个队列。 普通发送。负载均衡12个队列。指定超时时间指定MessageQueue,发送&#…

新电脑安装系统找不到硬盘原因和解决方法来了

有不少网友反馈新电脑采用官方u盘方式装win10或win100出现找不到硬盘是怎么回事&#xff1f;后来研究半天发现是bios中开启了rst(vmd)模式。如果关闭rst模式肯定是可以安装的&#xff0c;但这会影响硬盘性能&#xff0c;有没有办法解决开启rst模式的情况安装win10或win11呢&…

蓝桥杯之c++入门(一)【第一个c++程序】

目录 前言一、第⼀个C程序1.1 基础程序1.2 main函数1.3 字符串1.4 头文件1.5 cin 和 cout 初识1.6 名字空间1.7 注释 二、四道简单习题&#xff08;点击跳转链接&#xff09;练习1&#xff1a;Hello,World!练习2&#xff1a;打印飞机练习3&#xff1a;第⼆个整数练习4&#xff…

Electron学习笔记,安装环境(1)

1、支持win7的Electron 的版本是18&#xff0c;这里node.js用的是14版本&#xff08;node-v14.21.3-x86.msi&#xff09;云盘有安装包 Electron 18.x (截至2023年仍在维护中): Chromium: 96 Node.js: 14.17.0 2、安装node环境&#xff0c;node-v14.21.3-x86.msi双击运行选择安…

【机器学习】自定义数据集使用框架的线性回归方法对其进行拟合

一、使用框架的线性回归方法 1. 基础原理 在自求导线性回归中&#xff0c;我们需要先自定义参数&#xff0c;并且需要通过数学公式来对w和b进行求导&#xff0c;然后在反向传播过程中通过梯度下降的方式来更新参数&#xff0c;从而降低损失值。 2. 实现步骤 ① 散点输入 有一…

微服务搭建----springboot接入Nacos2.x

springboot接入Nacos2.x nacos之前用的版本是1.0的&#xff0c;现在重新搭建一个2.0版本的&#xff0c;学如逆水行舟&#xff0c;不进则退&#xff0c;废话不多说&#xff0c;开搞 1、 nacos2.x搭建 1&#xff0c;首先第一步查询下项目之间的版本对照&#xff0c;不然后期会…

扣子平台音频功能:让声音也能“智能”起来

在数字化时代&#xff0c;音频内容的重要性不言而喻。无论是在线课程、有声读物&#xff0c;还是各种多媒体应用&#xff0c;音频都是传递信息、增强体验的关键元素。扣子平台的音频功能&#xff0c;为开发者和内容创作者提供了一个强大而灵活的工具&#xff0c;让音频的使用和…

全面了解 Web3 AIGC 和 AI Agent 的创新先锋 MelodAI

不管是在传统领域还是 Crypto&#xff0c;AI 都是公认的最有前景的赛道。随着数字内容需求的爆炸式增长和技术的快速迭代&#xff0c;Web3 AIGC&#xff08;AI生成内容&#xff09;和 AI Agent&#xff08;人工智能代理&#xff09;正成为两大关键赛道。 AIGC 通过 AI 技术生成…

【Uniapp-Vue3】动态设置页面导航条的样式

1. 动态修改导航条标题 uni.setNavigationBarTitle({ title:"标题名称" }) 点击修改以后顶部导航栏的标题会从“主页”变为“动态标题” 2. 动态修改导航条颜色 uni.setNavigationBarColor({ backgroundColor:"颜色" }) 3. 动态添加导航加载动画 // 添加加…

GitLab配置免密登录和常用命令

SSH 免密登录 Windows免密登录 删除现有Key 访问目录&#xff1a;C:\Users\Administrator\ .ssh&#xff0c;删除公钥&#xff1a;id_rsa.pub &#xff0c;私钥&#xff1a;id_rsa 2.生成.ssh 秘钥 运行命令生成.ssh 秘钥目录&#xff08; ssh-keygen -t rsa -C xxxxxx126.…

Spring Boot 自动配置

目录 什么是自动配置&#xff1f; Spring 加载 Bean ComponentScan Import 导入类 导入 ImportSelector 接口的实现类 SpringBoot 原理分析 EnableAutoConfiguration Import(AutoConfigurationImportSelector.class) AutoConfigurationPackage SpringBoot 自动配置流…

16.好数python解法——2024年省赛蓝桥杯真题

问题描述 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位…)上的数字是奇数,偶数位(十位、千位、十万位…)上的数字是偶数,我们就称之为“好数”。 给定一个正整数N,请计算从1到N一共有多少个好数。 输入格式 一个整数N。 输出格式 一个整数代表答案。 样例输入 1 …