vue-cli3.0 环境变量与模式配置方法


Posted in Javascript onNovember 08, 2018

vue-cli3.0移除了配置文件目录: config和build文件夹。可以说是非常的精简了,那移除了配置文件目录后如何自定义配置环境变量和模式呢?

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

所有方法肯定是来源于现实的需求。在一个产品的前端开发过程中,一般来说会经历本地开发、测试脚本、开发自测、测试环境、预上线环境,然后才能正式的发布。对应每一个环境可能都会有所差异,比如说服务器地址、接口地址、websorket地址…… 等等。在各个环境切换的时候,就需要不同的配置参数,所以就可以用环境变量和模式,来方便我们管理。

环境变量

cli-3.0总共提供了四种方式来制定环境变量:

1.在根目录添加.env文件,配置所有情况下都会用到的配置(不知道这个存在的意义,所有的都需要的也就不需要配置了吧)。

2.在根目录添加.env.local 文件,配置所有情况下都会用到的配置,与.env的区别是只会在本地,该文件不会被git跟踪。

3.在根目录添加.env.[mode] 文件,配置对应某个模式下的配置,比如:.env.development来配置开发环境的配置。

4.在根目录添加.env.[mode].local文件,配置对应某个模式下的配置,与.env.[mode]的区别也只是会在本地生效,该文件不会被git跟踪。

在文件中,我们只需要以key=value的方式就可以设置变量了。

例如:

FOO=bar
VUE_APP_SECRET=secret

环境变量的使用

设置完环境变量之后就可以在我们的项目中使用这两个变量了。不过还需要注意的是在项目的不同地方使用,限制也不一样。

1.在项目中,也就是src中使用环境变量的话,必须以VUE_APP_开头。例如我们可以在main.js中直接输出:console.log(process.env.VUE_APP_SECRET)

2.在webpack配置中使用,没什么限制,可以直接通过process.env.XXX来使用

3.在public/index.html中使用的:分三类:(没怎么用过)

<%= VAR %> 用于非转换插值 例如:`<link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico" rel="external nofollow" >`
 <%- VAR %> 用于HTML转义插值
 <% expression %> 用于JavaScript控制流

模式

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

1.development:在vue-cli-service serve下,即开发环境使用

2.production:在vue-cli-service build 和vue-cli-service test:e2e下,即正式环境使用

3.test: 在vue-cli-service test:unit下使用

另外,如果你想要修改模式下默认的环境变量的话可以通过--mode来实现,例如:

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

有环境变量就能完成我们的需求了,为什么需要有模式的存在,这里我没查到详细的文档,个人认为模式是为了提供给第三方的插件一个辨识。例如vuex可以根据模式的不同,在development自动注入devtoolPlugin插件,利于开发,而在production中检测到错误不会进行console。

举例

说完了概念,可能还是比较模糊,可以试着添加一个stage环境,用来模拟预上线。

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

vue-cli3.0 环境变量与模式配置方法

在根目录下创建.env.stage文件,来声明变量:

vue-cli3.0 环境变量与模式配置方法

vue-cli3.0 环境变量与模式配置方法

这里声明的NODE_ENV = ‘production'用来表示这是生产环境。VUE_APP_CURRENTMODE为项目变量,outputDir为除数打包后文件的地址。
在vue.config.js中使用环境变量,制定输出文件为环境变量配置的文件:

vue-cli3.0 环境变量与模式配置方法

最后执行命令yarn stage能看到根目录下生成了stage文件:

vue-cli3.0 环境变量与模式配置方法

这样我们就配置完了stage环境。详细的项目地址可以参考:以vue-cli3.0为基础,结合vue-router、vuex、axios、iview组件库搭建一个工程化前端demo

参考文档:Environment Variables and Modes

总结

以上所述是小编给大家介绍的vue-cli3.0 环境变量与模式配置方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript编程起步(第三课)
Feb 27 Javascript
jquery判断单个复选框是否被选中的代码
Sep 03 Javascript
javascript学习笔记(八) js内置对象
Jun 19 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
Mar 22 Javascript
Spring MVC中Ajax实现二级联动的简单实例
Jul 06 Javascript
详解ECMAScript6入门--Class对象
Apr 27 Javascript
微信小程序按钮去除边框线分享页面功能
Aug 27 Javascript
JavaScript常见继承模式实例小结
Jan 11 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
jQuery - AJAX load() 实例用法详解
Aug 27 jQuery
微信小程序之滑动页面隐藏和显示组件功能的实现代码
Jun 19 Javascript
js基于div丝滑实现贝塞尔曲线
Sep 23 Javascript
详解如何创建并发布一个 vue 组件
Nov 08 #Javascript
webpack开发环境和生产环境的深入理解
Nov 08 #Javascript
webpack 开发和生产并行设置的方法
Nov 08 #Javascript
JS动画实现回调地狱promise的实例代码详解
Nov 08 #Javascript
深入解析ES6中的promise
Nov 08 #Javascript
vue中promise的使用及异步请求数据的方法
Nov 08 #Javascript
node使用Mongoose类库实现简单的增删改查
Nov 08 #Javascript
You might like
PHP数据流应用的一个简单实例
2012/09/14 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
JavaScript 事件对象的实现
2009/07/13 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
React快速入门教程
2017/01/17 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
详解如何实现一个简单的 vuex
2018/02/10 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
python实现分页效果
2017/10/25 Python
Python八皇后问题解答过程详解
2019/07/29 Python
Python算法中的时间复杂度问题
2019/11/19 Python
python3 实现调用串口功能
2019/12/26 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
社会实践自我鉴定
2013/11/07 职场文书
幼儿园教师备课制度
2014/01/12 职场文书
开学典礼决心书
2014/03/11 职场文书
浪费资源的建议书
2014/03/12 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android