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


Posted in Javascript onApril 28, 2020

我们可以在项目根目录中的下列文件来指定环境变量:

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

一个环境文件只包含环境变量的“键=值”对,并且必须以VUE_APP开始:

FOO=bar     //无效
VUE_APP_SECRET=secret  有效

模式

模式是 Vue CLI 项目中一个重要的概念。默认情况下,一个 Vue CLI 项目有三个模式:

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

了解模式以后,我们可以为对应环境设置相应的环境变量,比如:

  • 为 production 设置 .env.production
  • 为 development 设置 .env.development
  • *为一个特定模式准备的环境文件 (例如 .env.production ) 将会比一般的环境文件 (例如 .env ) 拥有更高的优先级

如果只需要在本地使用的话,可以在后面加入.local,比如 .env.local ,会git 忽略

在客户端侧代码中,可以使用 process.env.VUE_APP_* 获取应用

注:process.env.NODE_ENV,获取应用运行模式( "development" 、 "production" 或 "test" )

process.env.BASE_URL,应用基础路径( vue.config.js 中的 publicPath 选项)

ps:下面看下浅谈vue中环境变量和模式的作用

使用vue框架进行前端开发也有一段时间了,遇到的问题可以大致分为2类:开发问题,部署问题。

开发方面的问题是最多的,也是大家经常会遇到的,但是部署的问题也不容小觑,一旦部署出错会造成严重的上线事故。

开发和测试时调用后台接口的地址是和生产环境中不一样的,有些时候需要跳转到其他网页,也需要测试和生产环境跳转不同的页面。

这些配置如果都用人工来维护,上测试环境注释掉生产的代码,上生产环境注释掉测试的代码,会很麻烦也很容易出错。

所以有必要在一个入口进行控制,这就要用到vue框架中的环境变量和模式。

在vue-cli3构建的项目中,项目根目录下创建.env.[模式]文件可以定义一种模式,在这个文件中定义的变量就是对应模式的环境变量。

在本地启动项目默认是使用的development模式,使用build命令打包默认是使用的production模式。但是我们一般都会有一个测试环境,在我们打测试包和生产包的时候都是用的是production模式,所以需要定义一个环境变量来进行区分。

我目前的做法是创建.env.development,.env.test,.env.production三个模式文件。

每个模式文件中有3个环境变量:NODE_ENV(对应当前模式的名称),VUE_APP_RUNTIME_ENV(对应当前环境的名称),VUE_APP_BASE_URL(当前环境向后台发请求的baseurl)。

vue-cli3构建的项目中默认只有development模式和production模式,默认的NODE_ENV分别是development和production,很多配置也只依据NODE_ENV区分这2种模式,但是我们需要有3种模式。生产和测试的包应该是除了环江变量不同,其他都相同,所以同属production模式。用额外的VUE_APP_RUNTIME_ENV来区分production和test环境。

定义完成之后,在项目中使用process.env.VUE_APP_RUNTIME_ENV即可访问到变量的值。

package.json中也需要定义一条打测试包的命令:

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

表示打一个使用测试配置的身生产包。

到此这篇关于深入浅析vue全局环境变量和模式的文章就介绍到这了,更多相关vue全局环境变量和模式内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javaScript 动态访问JSon元素示例代码
Aug 30 Javascript
javascript简单实现图片预加载
Dec 03 Javascript
理解JavaScript事件对象
Jan 25 Javascript
jQuery添加和删除输入文本框标签代码
May 20 Javascript
jQuery插件pagination实现无刷新分页
May 21 Javascript
javacript获取当前屏幕大小
Jun 04 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 Javascript
微信小程序实现带刻度尺滑块功能
Mar 29 Javascript
Vue之Vue.set动态新增对象属性方法
Feb 23 Javascript
JS实现图片旋转动画效果封装与使用示例
Jul 09 Javascript
Vue extend的基本用法(实例详解)
Dec 09 Javascript
js实现超级玛丽小游戏
Mar 18 Javascript
你准备好迎接vue3.0了吗
Apr 28 #Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
Apr 28 #Javascript
JavaScript 禁止用户保存图片的实现代码
Apr 28 #Javascript
JS求解两数之和算法详解
Apr 28 #Javascript
jQuery插件simplePagination的使用方法示例
Apr 28 #jQuery
uni-app如何页面传参数的几种方法总结
Apr 28 #Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
Apr 28 #Javascript
You might like
GD输出汉字的函数的分析
2006/10/09 PHP
PHP 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
python解释器spython使用及原理解析
2019/08/24 Python
Python3并发写文件与Python对比
2019/11/20 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
校本教研活动总结
2014/07/01 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
2014年文员工作总结
2014/11/18 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
python和anaconda的区别
2022/05/06 Python
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers