vue教程:.env环境变量配置文件(.env.development、.env.production)

介绍

通过环境变量传参,可以在不修改代码的情况下,加载不同的配置

作用

环境文件(.env系列)本质是一套多环境配置管理方案

  1. 区分运行模式:开发、测试、正式环境,一套代码,不同配置
  2. 集中管理常量:接口地址、页面标题、功能开关、第三方key统一放文件,不用到处改代码
  3. 隔离公私配置:公共配置提交git;本地私有配置(.local)不上传git,每个人本机可自定义
  4. 避免硬编码:不要把接口地址写死在业务代码,改环境文件即可切换环境
  5. 配合打包脚本:执行不同命令自动加载对应配置,不用手动改代码

底层原理

Vite构建时读取.env文件,把VITE_*变量静态替换进代码,打包后变成真实字符串。

应用场景

场景1:多环境接口地址切换(最常用)

前后端开发联调、测试服务器、线上正式服务器 接口地址不一样

  • 开发环境:http://127.0.0.1:8080
  • 测试环境:https://api-test.xxx.com
  • 生产环境:https://api.xxx.com

场景2:功能开关控制

不同环境开启/关闭某些功能

  • 开发开启打印日志
  • 显示调试面板
  • 开启mock模拟数据

场景3:页面标题、项目版本、版权信息

不同环境展示不同标题,区分环境方便测试人员识别当前是哪个包

场景5:自定义测试环境 build:test

后端有一套独立测试服务器,需要打测试包给测试人员,不改动正式环境配置。

场景6:本地开发人员个性化配置

工程师A本地后端端口是8081,工程师B是8082。

场景7:第三方前端公共密钥配置

前端可暴露的key(如地图AK、埋点id),放到环境变量统一管理。

注意: 不要放后端密钥、数据库密码

不该用环境文件的情况

  1. 后端密钥、数据库密码、token密钥:禁止,因为前端会泄露。这类配置放在后端服务。

  2. 运行时动态变化的参数:比如用户登录后获取的用户配置,不要写环境变量。env是构建期确定,打包完成后不能修改。

配置文件名称

文件的文件名必须按下面方式命名,不能乱起名,否则读取不到文件:

  • .env:全局默认配置文件,无论什么环境都会加载合并。

  • .env.development:开发环境的配置文件

  • .env.production:生产环境的配置文件

内容格式

属性名必须以 VUE_APP_ 开头,如:

VUE_APP_BASE_API = '/dev-api'

加载

vue 会根据 启动命令 自动加载 相对应的环境配置文件。

开发环境

开发环境加载 .env 和 .env.development 。

使用 npm run serve 命令

生产环境

生产环境加载 .env 和 .env.production 。

使用 npm run prod 命令

优先级

环境配置文件 > 全局配置文件

当全局的配置文件和环境的配置文件有相同配置项时,环境的配置项会覆盖全局的配置项

项目中的使用

在配置文件中定义的属性,可通过下面代码方法

process.env.xxx

例子:

process.env.VUE_APP_BASE_API

例子

.env

默认配置

NODE_ENV = production
VUE_APP_ENV = ''

.env.development

使用 npm run serve 会合并 .env 文件,.env.development 文件的配置

# just a flag
ENV = 'development'

# base api
VUE_APP_BASE_API = '/dev-api'

.env.production

使用 npm run prod 会合并 .env 文件,.env.prod 文件配置

# just a flag
ENV = 'production'

# base api
VUE_APP_BASE_API = '/prod-api'

原文出处:/show_1IX2pcgk2U8N.html