深入浅析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 相关文章推荐
js中escape对应的C#解码函数 UrlDecode
Dec 16 Javascript
jquery 单引号和双引号的区别及使用注意
Jul 31 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
Jul 18 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
Aug 26 Javascript
详解JavaScript中的4种类型识别方法
Sep 14 Javascript
Javascript的无new构建实例详解
May 15 Javascript
微信小程序-拍照或选择图片并上传文件
Jan 06 Javascript
基于React实现表单数据的添加和删除详解
Mar 14 Javascript
Angular6笔记之封装http的示例代码
Jul 27 Javascript
详解将微信小程序接口Promise化并使用async函数
Aug 05 Javascript
JavaScript提升机制Hoisting详解
Oct 23 Javascript
JS数组方法shift()、unshift()用法实例分析
Jan 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
从php核心代码分析require和include的区别
2011/01/02 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
PHP crc32()函数讲解
2019/02/14 PHP
JQUERY操作JSON实例代码
2010/02/09 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
python文字转语音的实例代码分析
2019/11/12 Python
Python版中国省市经纬度
2020/02/11 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
python爬虫用mongodb的理由
2020/07/28 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
大学生毕业自我鉴定
2013/11/06 职场文书
大学生军训感想
2014/02/16 职场文书
本科毕业生自荐信
2014/06/02 职场文书
介绍信范文大全
2015/05/07 职场文书
2016年寒假生活小结
2015/10/10 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript
nginx常用配置conf的示例代码详解
2022/03/21 Servers