深入浅析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中cookie的使用详细分析
May 28 Javascript
javascript 写的一个简单的timer
Jul 30 Javascript
javascript 强制刷新页面的实现代码
Dec 13 Javascript
validator验证控件使用代码
Nov 23 Javascript
使用jquery实现仿百度自动补全特效
Jul 23 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
Dec 04 Javascript
用vue和node写的简易购物车实现
Apr 25 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
Aug 16 Javascript
jQuery zTree插件快速实现目录树
Aug 16 jQuery
基于vue 动态菜单 刷新空白问题的解决
Aug 06 Javascript
如何利用JS将手机号中间四位变成*号
Sep 29 Javascript
vue中div禁止点击事件的实现
Apr 02 Vue.js
你准备好迎接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
关于Intype一些小问题的解决办法
2008/03/28 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
浅谈PHP进程管理
2019/03/08 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
javascript静态的url如何传递
2007/05/03 Javascript
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
使用JS动态显示文本
2017/09/09 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
python黑魔法之参数传递
2016/02/12 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
python绘制条形图方法代码详解
2017/12/19 Python
python修改txt文件中的某一项方法
2018/12/29 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
幼教个人求职信范文
2013/12/02 职场文书
企业职业病防治方案
2014/05/29 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
人事文员岗位职责
2015/02/04 职场文书
经典爱情感言
2015/08/03 职场文书
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL