vue3+vite配置环境变量实现开发、测试、生产的区分

文章目录

    • 一、为什么需要区分 (dev)、测试 (test) 和生产 (prod) 环境
    • 二、vue3的项目如何通过配置方式区分不同的环境
      • 1、创建不同环境的.env文件
      • 2、在不同的.env文件中配置相应的环境变量
        • 1).env.develoment
        • 2).env.test
        • 3).env.production
      • 3、在项目中使用环境变量
      • 4、在package.json中定义运行项目的脚本命令
    • 三、运行效果

在vue的实际项目中都要经过开发、测试、然后上生产的阶段,在开发、测试的过程中往往会要频繁的切换开发、测试、生产等不同的环境。每个环境的配置有可能不一样,本文介绍如何通过vue3+vite配置环境变量实现开发、测试、生产灵活便捷的切换。

一、为什么需要区分 (dev)、测试 (test) 和生产 (prod) 环境

做过大型项目开发的都知道,每个项目都会要经历开发、测试、再到生产上线,一般在开发时候最常用到(development)开发环境、(production)生产环境、(test)测试环境。每个环境的配置可能都不太一样。

  • 开发环境:为开发人员提供一个安全的地方来进行编码和调试,不会影响到其他环境,一般来说开发人员在本地机器上运行和测试应用程序。
  • 测试环境:用于测试,模拟生产环境,确保新功能在部署前能够正常工作,并且不会影响现有功能。
  • 生产环境:是面向用户的最终环境,任何更改都必须经过严格的测试才能部署到这里,通常具有优化和最少的日志记录。

区分开发 (dev)、测试 (test) 和生产 (prod) 环境是软件开发中的一个最佳实践。不同的环境通常有不同的资源配置。典型的如vue所调用的后台接口数据,在开发平台可能是本地服务提供的接口、用于自动化测试可能是mock提供的数据、生产应该是正式环境提供的真实接口。

二、vue3的项目如何通过配置方式区分不同的环境

vue3的项目可以通过vite的环境变量配置来进行不同环境的配置,可以参考vite的官方文档《环境变量和模式》
接下来,我们以一个实例来介绍在vue3的项目如何通过vite配置方式区分不同的环境。

1、创建不同环境的.env文件

在vue3根目录下创建三个文件分别为.env.develoment.env.test.env.production
创建的文件需要.env开头

env文件

2、在不同的.env文件中配置相应的环境变量

1).env.develoment
NODE_ENV='development'
# API URL
VITE_APP_API_URL='http://localhost:8000'
2).env.test
NODE_ENV='test'
# API URL
VITE_APP_API_URL=''
3).env.production
NODE_ENV='production'
# API URL
VITE_APP_API_URL='http://iblog.ishareread.com'

这里我们主要通过VITE_APP_API_URL变量来区分不同的环境调用不同的接口,在开发环境调用本地接口http://localhost:8000,在测试环境用mock接口,在生产环境调用真实接口。

3、在项目中使用环境变量

使用import.meta.env.VITE_APP_API_URL在axios请求中使用环境变量的配置来调用不同的接口。

import axios from 'axios'
const api_rul = import.meta.env.VITE_APP_API_URL
// create an axios instance
const service = axios.create({baseURL: api_rul,timeout: 5000 // request timeout
})
export default service

查看调用的哪些环境变量,可以在在main.js打印console.log('环境变量:', import.meta.env);看一下
main.js

import './assets/main.css'
import { createApp } from 'vue'
import App from './App.vue'console.log('环境变量:', import.meta.env);createApp(App).mount('#app')

4、在package.json中定义运行项目的脚本命令

{"name": "mocktest","version": "0.0.0","private": true,"type": "module","scripts": {"dev": "vite","test": "vite --mode test","build": "vite build","preview": "vite preview"},"dependencies": {"axios": "^1.7.5","vue": "^3.4.29"},"devDependencies": {"@vitejs/plugin-vue": "^5.0.5","mockjs": "^1.1.0","vite": "^5.3.1","vite-plugin-mock": "^3.0.2"}
}

package.json

三、运行效果

开发环境运行npm run dev
npm run dev

测试环境运行npm run test
npm run dev
可以看出通过运行不同的命令通过环境变量区分了不同的运行环境,避免了不同环境去改代码去适配不同的环境。


博客地址:http://xiejava.ishareread.com/

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

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

相关文章

Git之git stash高级用法(五十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…

Tomcat 部署与优化

目录 tomcat 简介 tomcat 构件 1. Web 容器 2. Servlet 容器 3.Jsp容器 tomcat 核心组件 Connector Container Service 子容器 总结 tomcat 部署 tomcat请求过程 tomcat部署 tomcat 优化 tomcat配置文件参数优化 JVM优化 tomcat 简介 提到Tomcat 就想到 java&a…

RISC-V vector(1) --- vector的引入与register说明

Vector相较于SIMD的优势 这两种实现方案,都是为了实现数据级并行性(存在大量的数据可供程序同时计算); SIMD(Single Instruction Multiple Data) SIMD是将数据宽度和操作类型,都放在了指令中&a…

http应用层协议

一、万维网 用来存放各种资源的网络。 1、如何在万维网中表示一个资源 ? url ——统一资源定位符&#xff1b; 形式&#xff1a; <协议>://<主机>:<端口>/<路径>&#xff1b; <主机>:<端口>/<路径> //表示了资源所在的…

这个TOP 100 AI应用榜单,包含了所有你需要的使用场景(一)

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

【Unity3D小技巧】Unity3D中实现FPS数值显示功能实现

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群&#xff1a;398291828 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 很简单也很使用的小技巧&#xff0c;就是在Unity…

【系统分析师】-综合知识-计算机系统基础

1、流水线的吞吐率是指流水线在单位时间里所完成的任务数或输出的结果数。设某流水线有 5 段&#xff0c;有 1 段的时间为 2ns &#xff0c;另外 4 段的每段时间为 1ns&#xff0c;利用此流水线完成 100 个任务的吞吐率约为&#xff08;16&#xff09;个/s 。 2、矢量图像通过使…

[NeurIPS 2024] Self-Refine: Iterative Refinement with Self-Feedback

Contents TL;DRReferences TL;DR 通过让 LLM 生成 feedback 不断 refine 自身的回答&#xff0c;可以提升回答效果&#xff0c;但也会带来不可忽视的推理开销 References Madaan, Aman, et al. “Self-refine: Iterative refinement with self-feedback.” Advances in Neura…

广州网站制作seo优化技巧

随着互联网的迅速发展&#xff0c;越来越多的企业意识到网站对于品牌推广和销售的重要性。而在众多网站中&#xff0c;如何让自己的站点脱颖而出&#xff0c;是每个网站管理员和SEO从业者必须面对的挑战。特别是对于广州这样一个经济繁荣、竞争激烈的城市&#xff0c;网站制作和…

基于R语言进行AMMI分析2

接续上文【基于R语言进行AMMI分析1】 1、AMMI()函数的结果解读 # 加载agricolae包 library(agricolae) # 加载数据 data(plrv) # 查看数据 head(plrv) model<-with(plrv,AMMI(Locality,Genotype,Rep,Yield,PCTRUE)) # 查看方差分析结果 model$ANOVA # 查看主成分的方差分析…

minio 后端大文件分片上传,合并,删除分片

背景 网上大多数minio大文件上传都是采用后台返回前端预上传链接&#xff0c;然后由前端去put请求直接和minio通信上传分片文件&#xff0c;然后调用后台合并分片逻辑来达到快申诉上传的目的&#xff0c;详情可以参考我的上两篇文章 最近有个项目域名是https的&#xff0c;但…

详解华为项目管理,附华为高级项目管理内训材料

&#xff08;一&#xff09;华为在项目管理中通过有效的沟通、灵活的组织结构、坚持不懈的努力、细致的管理和科学的考核体系&#xff0c;实现了持续的创新和发展。通过引进先进的管理模式&#xff0c;强调以客户需求为导向&#xff0c;华为不仅优化了技术管理和项目研发流程&a…

单片机原理及技术(八)—— 串行口的工作原理及应用

目录 一、串行通信基础 1.1 并行通信与串行通信 1.1.1 并行通信 1.1.2 串行通信 1.2 同步通信与异步通信 1.3 串行通信的传输模式 二、串行口的结构 2.1 串行口控制寄存器SCON 2.1.1 SM0、SM1 2.1.2 SM2 2.1.3 REN 2.1.4 TB8 2.1.5 RB8 2.1.6 TI 2.1.7 RI 2.2 …

数据结构: 树状数组

在OI赛事中&#xff0c;数据结构是非常重要的一个内容&#xff0c;更是有人说过&#xff0c;算法数据结构程序: A l g o r i t h m D a t a AlgorithmData AlgorithmData S t r u c t u r e P r o g r a m m i n g StructureProgramming StructureProgramming 接下来&#…

如何在 Ubuntu 系统中安装PyCharm集成开发环境?

在上一篇文章中&#xff0c;我们探讨了Jupyter notebook&#xff0c;今天再来看看另一款常用的Python 工具&#xff0c;Pycharm。 PyCharm也是我们日常开发和学习常用的Python 集成开发环境 (IDE)&#xff0c;由 JetBrains 开发。 PyCharm 带有一整套可以帮助用户在使用Pytho…

docker映射了端口,宿主机不生效

1、问题产生原因 docker run -d --name my-redis -p 6379:6379 -v /usr/redis.conf:/usr/local/etc/redis/redis.conf team-redis:3.2 redis-server /usr/local/etc/redis/redis.conf 这容器跑起来了&#xff0c;端口6379没用。搞的我一直怀疑哪里出错了&#xff0c;查看配置…

【网络安全】服务基础第一阶段——第二节:网络测试与用户

一、Windows网络测试工具 CMD&#xff08;命令提示符&#xff09;中&#xff0c;ping和tracert是两个非常有用的网络诊断工具 1.1.ping命令 ping命令是Windows和其他操作系统中用于测试主机之间网络连接是否可达的基本命令行工具。它通过发送ICMP&#xff08;Internet Contr…

CSS中的元素布局与定位详细说明

1、前言 在CSS开发中&#xff0c;很重要的一个工作就是根据UI设计稿&#xff0c;进行元素的布局与定位&#xff0c;使得元素&#xff08;比如某一段文本、按钮、图片等&#xff09;显示在页面正确的位置。本文就元素的布局与定位方面&#xff0c;做一些讲解和说明。 2、元素的…

Markdown 美化 Github 个人主页

注&#xff1a;本文参考这篇博客 http://t.csdnimg.cn/KXhSw 目录 1 效果展示2 创建仓库3 编写 Markdown3.1 动态波浪图3.2 打字机动图3.3 技术栈图标3.4 项目贡献统计3.5 连续贡献统计3.6 贡献统计图3.7 代码时长统计3.8 仓库代码占比 1 效果展示 先来看看效果&#xff1a; 动…

OSPF路由配置--多区域

目录 不理解OSPF路由动态协议的可以回顾一下OSPF详解&#xff0c;下这一系列的实验都不再做解释,直接开始配置 一. 实验拓扑 二. 实验配置 (命令可以直接复制粘贴到CLI中) 三. 实验验证 不理解OSPF路由动态协议的可以回顾一下OSPF详解&#xff0c;下这一系列的实验都不…