一、全局文件命名特点
.env 在所有的环境中被载入
.env.local 在所有的环境中被载入,但会被 git 忽略
.env.[mode] 只在指定的模式中被载入
.env.[mode].local 只在指定的模式中被载入,但会被 git 忽略
二、环境变量定义规范
1. 其中以.local结尾的文件会被忽略,
2. [mode]可以是:development(开发)、production(生产)、test(测试),他们分别代表不同的环境模式
3. NODE_ENV,BASE_URL 是默认的环境变量可访问无法被修改,NODE_ENV代表当前的环境模式,BASE_URL代表的是当前根路径
4. 自定义环境变量规则:必须以 VUE_APP_ 开头 否则无效
5. 访问方式:在开发中通过 process.env.变量名称 的方式获取变量值
6. 修改完需要重启服务才生效
7. 不可用来存储非公开信息,因为webpack编译后会被暴露
三、定义环境变量文件
1. 开发环境 .env.development
# 开发环境,运行 调用的环境变量
# 当前文件配置的环境变量,会在运行 npm run dev 时调用
# 除非你明确知道此文件修改的含义,否则请勿修改
# baseURL
VUE_APP_BASEURL = 'http://localhost:9000/development'
2. 生产环境 .env.production
# 生产环境,打包调用的环境变量
# 当前文件配置的环境变量,会在运行 npm run build 时调用
# 除非你明确知道此文件修改的含义,否则请勿修改
# baseURL
VUE_APP_BASEURL = 'http://localhost:9000/production'
3. 测试环境 .env.test
# 测试环境调用的环境变量
# 当前文件配置的环境变量,会在运行 npm run test 时调用
# 除非你明确知道此文件修改的含义,否则请勿修改
# baseURL
VUE_APP_BASEURL = 'http://localhost:9000/test'
4. 所有环境环境 .env
# 所有调用的环境变量
# 除非你明确知道此文件修改的含义,否则请勿修改
# AAA
VUE_APP_AAA = 'AAA'
5. 所有环境环境 (被 git 忽略).env.local
# 所有调用的环境变量,不会提交 git
# 除非你明确知道此文件修改的含义,否则请勿修改
# BBB
VUE_APP_BBB = 'BBB'
四、在组件中使用
<template>
<div class="home">
<h1>八、vue 环境变量</h1>
<div>NODE_ENV:{{ NODE_ENV }}</div>
<div>VUE_APP_AAA:{{ VUE_APP_AAA }}</div>
<div>VUE_APP_BASEURL:{{ VUE_APP_BASEURL }}</div>
<div>VUE_APP_BBB:{{ VUE_APP_BBB }}</div>
<div>BASE_URL:{{ BASE_URL }}</div>
</div>
</template>
<script>
const { NODE_ENV, VUE_APP_AAA, VUE_APP_BASEURL, VUE_APP_BBB, BASE_URL } = process.env;
export default {
name: "ChildView",
data() {
return {
NODE_ENV,
VUE_APP_AAA,
VUE_APP_BASEURL,
VUE_APP_BBB,
BASE_URL,
};
},
mounted() {
console.log(process.env);
// 结果:
// {
// NODE_ENV: "development",
// VUE_APP_AAA: "AAA",
// VUE_APP_BASEURL: "http://localhost:9000/development",
// VUE_APP_BBB: "BBB",
// BASE_URL: "/",
// }
},
};
</script>