vue中环境变量的使用与配置讲解

目录
  • 为什么需要配置环境变量和模式呢?
  • 环境变量
    • 1)环境变量文件分类
    • 2)环境变量配置
    • 3)环境变量访问
  • 模式
    • 1)模式分类
    • 2)模式定义与使用
  • 结合实际应用

为什么需要配置环境变量和模式呢?

所有方法肯定是来源于现实的需求。在一个产品的前端开发过程中,一般来说会经历本地开发、测试脚本、开发自测、测试环境、预上线环境,然后才能正式的发布。

对应每一个环境可能都会有所差异,比如说用户访问资源权限、服务器地址、接口地址等。在各个环境切换的时候,就需要不同的配置参数,所以就可以用环境变量和模式,来方便我们管理。

环境变量

1)环境变量文件分类

在vue-cli3中可以在根目录(与package.json同级)中创建以下四种类型的环境变量文件:

.env                # 在所有的环境中被载入
.env.local          # 在所有的环境中被载入,但会被 git 忽略
.env.[mode]         # 只在指定的模式中被载入
.env.[mode].local   # 只在指定的模式中被载入,但会被 git 忽略

值得注意的是,为一个特定模式准备的环境文件的(如:.env.production)将比一般的环境文件(如:.env)拥有更高的优先级。

2)环境变量配置

每一个环境变量文件中只包含环境变量的“键=值”对,所配置的变量中只有以VUE_APP_开头的变量才会被webpack.DefinePlugin静态嵌入到客户端侧包中,如:

VUE_APP_PERMISSION = true

3)环境变量访问

被载入和变量将会对vue-cli-service的所有命令、插件和依赖可用。在应用代码中通过process.env.[变量名]进行访问,从而获取到它的值,如下:

if (isDev()) {
    return process.env.VUE_APP_PERMISSION === "true" ? true : false;
  }

除了 VUE_APP_ 变量之外,在你的应用代码中始终可用的还有两个特殊的变量:

  • (1)NODE_ENV :会是 “development”、“production” 或 “test” 中的一个。具体的值取决于应用运行的模式。
  • (2)BASE_URL :会和 vue.config.js 中的 publicPath 选项相符,即你的应用会部署到的基础路径。

所有解析出来的环境变量都可以在 public/index.html 中使用,如下:

<link rel="icon" href="<%= BASE_URL %>favicon.ico" rel="external nofollow"  />

模式

1)模式分类

在vue-cli中默认情况下有以下三种模式

  • development 模式:用于 vue-cli-service serve
  • production 模式:用于 vue-cli-service build 和 vue-cli-service test:e2e
  • test 模式:用于 vue-cli-service test:unit

模式与环境变量不同,一个模式可包含多个环境变量(NODE_ENV),每个模式都会将NODE_ENV的值设为模式的名称。

2)模式定义与使用

你可以通过为 .env 文件增加后缀来设置某个模式下特有的环境变量。比如,如果你在项目根目录创建一个名为 .env.development 的文件,那么在这个文件里声明过的变量就只会在 development 模式下被载入。

也可以通过传递 --mode 选项参数为命令行覆写默认的模式。

例如,如果你想要在构建命令中使用开发环境变量,则需在 package.json 脚本中设置:

"build": "vue-cli-service build --mode development"

结合实际应用

针对我们公司的项目来说,每个项目都设置了三种模式,分别为development、production和permission。我们都知道前两个是vue-cli项目中默认有的模式,那么permission模式便是我们在项目上自定义的,为什么要自定义这个模式呢?

作为非产品设计和开发人员,我们或许并不是很清楚这个模式产生的根本原因,那么我们先来看看项目上是怎么配置和应用这个模式,从而来了解它的作用。

首先在package.json添加一种类型,并修改默认环境变量为permission环境变量:

在根目录下创建.env.permission文件,来定义变量和值:

如上图所示,定义了一个.env.permission文件,并在该文件中设置VUE_APP_PERMISSION变量,并为其复制为true。( 在src文件夹下的任意文件中都可以关联到process.env.NODE_ENV环境变量)

然后找到该变量引用的地方,如下所示:

从上图便可看出,VUE_APP_PERMISSION环境变量影响着该系统是否开启运维模式,即权限管理模式。当系统通过yarn permission命令运行时,则进入权限控制模式,需要进行登录验证,并根据登录用户获取相应的资源。

这里需要特别注意的是,每种环境变量只有在所对应的模式被编译执行的时候才能被读取,也就是说,如果我在permission模式下执行编译,那就只能读取该模式下的变量,而不能读取development和production或其他模式中所设置的环境变量。所以如果在开发模式下进行编译,那么就无法读取到permission模式下的VUE_APP_PERMISSION变量。这也保证了不同模式编译结果的唯一性。

由此可见,当我们执行yarn serve的时候走的是development模式,而该模式中并未定义VUE_APP_PERMISSION环境变量,所以isPermission()为false,即不走权限控制。所以如果要走权限控制,对资源进行权限管理,那么就需要对permission模式进行编译。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Vue中.env、.env.development及.env.production文件说明

    目录 0.介绍 2.命名规则 3.关于文件的加载: 4.关于使用 4.1 在.vue文件中使用 4.2 在.js文件中 5.自定义环境 总结 0.介绍 模式是Vue CLI项目中一个重要的概念,默认情况下,一个Vue CLI项目有三种模式: developemt 模式用于vue-cli-service serve test 模式用于vue-cli-service test:unit production 模式用于vue-cli-service build 和vue-cli-service tes

  • Vue无法访问.env.development定义的变量值问题及解决

    目录 Vue无法访问.env.development定义的变量值 vue中.env | .env.development | .env.production使用 vue-cli-service build 自定义参数 总结 Vue无法访问.env.development定义的变量值 在.env.development定义变量时,发现获取不取值. 比方:原来的定义的一个变量,是可以访问的 VUE_APP_BASE_API = '/dev-api' 上面的是可以访问的 后来发现有多个接口,需要调用不

  • vue3+vite使用环境变量.env的一些配置情况详细说明

    目录 1.设置.env中的内容信息 注意vue3+vite 必须使用VITE开头的配置信息 否则无法获取 2.在 vite 中使用环境变量,可以用 import.meta.env,有四种环境变量,如下所示: 3.使用环境变量 4.配置env.d.ts文件,为环境变量增加智能提示 5.在package.json中配置模式 补充:Vue3的Env环境变量配置的应用 总结 在项目文件中新建文件.env .env.pro 两个文件其中.env 是默认设置 .env.pro 为正式环境设置 1.设置.en

  • CentOS中环境变量与配置文件的深入讲解

    前言 CentOS的环境变量配置文件体系是一个层级体系,这与其他多用户应用系统配置文件是类似的,有全局的,有用户的,有shell的,另外不同层级有时类似继承关系. 本文将详细介绍关于CentOS环境变量与配置文件的相关内容,下面话不多说了,来一起看看详细的介绍吧 什么是环境变量 bash shell用一个叫做 环境变量(environment variable) 的特性来存储有关shell会话和工作环境的信息.即允许在内存中存储数据,使得在程序或shell中运行的脚本能够访问它们. 在bash

  • 深入浅析vue全局环境变量和模式

    我们可以在项目根目录中的下列文件来指定环境变量: .env                # 在所有的环境中被载入 .env.local          # 在所有的环境中被载入,但会被 git 忽略 .env.[mode]         # 只在指定的模式中被载入 .env.[mode].local   # 只在指定的模式中被载入,但会被 git 忽略 一个环境文件只包含环境变量的"键=值"对,并且必须以VUE_APP开始: FOO=bar     //无效 VUE_APP_SE

  • Linux中环境变量配置的步骤详解

    简介 我们大家在平时使用Linux的时候,经常需要配置一些环境变量,这时候一般都是网上随便搜搜就有人介绍经验的.不过问题在于他们的方法各不相同,有人说配置在/etc/profile里,有人说配置在/etc/environment,有人说配置在~/.bash_profile里,有人说配置在~/.bashrc里,有人说配置在~/.bash_login里,还有人说配置在~/.profile里...这真是公说公有理...那么问题来了,Linux到底是怎么读取配置文件的呢,依据又是什么呢?下面这篇文章就来

  • go项目中环境变量的配置

    目录 一.为什么要配置文件 二.在go中使用配置文件 三.使用结构体的方式读取 四.区分开发环境和生产环境 五.在gin中集成配置文件 一.为什么要配置文件 1.容易编辑,配置比较集中,方便修改,在大业务量的系统里面,通过配置会方便后人理解整个系统的架构 2.做到业务代码和环境解耦,环境配置变量不侵入到代码层面 3.不同的环境切换比较方便 二.在go中使用配置文件 1.viper网站地址 2.本地安装 go get github.com/spf13/viper 3.简单的读取配置文件 packa

  • Node.js中环境变量process.env的一些事详解

    前言 最近这两天在和运维GG搞部署项目的事儿.碰到一个问题就是,咱们的dev,uat,product环境的问题. 因为是前后端分离,所以在开发和部署的过程中会有对后端接口的域名的切换问题.折腾了一下午,查询了各种资料这才把这Node环境变量process.env给弄明白. 下面这就做个问题解决的记录.希望能对这个不明白的人有所帮助.话不多说了,来一起看看详细的介绍吧. Node环境变量 首先,咱们在做react.vue的单页应用开发的时候,相信大家对配置文件里的process.env并不眼生.

  • 关于vue设置环境变量全流程

    目录 vue设置环境变量 创建不同环境变量文件 给.env文件添加内容 在package.json中添加不同环境对应的执行语句 使用 多环境变量 什么是多环境变量? 配置流程 vue设置环境变量 在开发的时候一般会有是三个环境:开发环境 测试环境 线上环境 vue 中有个概念就是模式,默认先vue cli 有三个模式 development模式用于 vue-cli-service serve production模式用于 vue-cli-service build 和 vue-cli-servi

  • Linux下Java环境变量的安装与配置

    安装 以JDK1.6.0_43为例 下载jdk-6u43-linux-x64.bin,http://www.oracle.com/technetwork/java/javase/downloads/index.html 增加可执行权限 chmod +x jdk-6u43-linux-x64.bin, 执行 ./jdk-6u43-linux-x64.bin 生成目录jdk1.6.0_43 拷贝到/usr/share下,mv jdk1.6.0_43 /usr/share 另外,jdk-6u43-li

  • Vue中axios拦截器如何单独配置token

    在了解到cookie.session.token的作用后学习token的使用 cookie cookie是随着url将参数发送到后台,安全性最低,并且大小受限,不超过4kb左右,它的数据保存在客户端 session session数据保存在服务端,在内存中开辟空间存储数据,session文件名即sessionID保存在cookie内,随cookie传送到服务端后在服务端匹配session文件 token token是服务端的一种算法,如果登录成功,服务端就会根据算法生成一个字符串,将字符串传递回

  • 如何在vue 中使用柱状图 并自修改配置

    1.在html文件导入echart <!-- 引入echarts --> <script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.8.0/echarts.min.js"></script> 2.在main.js上挂载echarts对象 Vue.prototype.$echarts = window.echarts // 使用时直接使用this.$echarts 3.页面结构 <templ

随机推荐