vue cli4下环境变量和模式示例详解


Posted in Javascript onApril 09, 2020

本文介绍了vue cli4下环境变量和模式示例详解,分享给大家,具体如下:

官方文档

环境变量

一个环境变量文件只包含环境变量的键值对:

NODE_ENV=development
VUE_APP_BASE_URL=http://127.0.0.1:8080/

注意:

  • NODE_ENV - 是 “development”、“production” 、"test"或者自定义的值。具体的值取决于应用运行的模式
  • BASE_URL - 会和 vue.config.js 中的 publicPath 选项相符,即你的应用会部署到的基础路径
  • 除了 NODE_ENV 和 BASE_URL,其他的环境变量必须以 VUE_APP_ 开头
  • 项目中使用:process.env.环境变量名,eg:VUE_APP_BASE_URL

模式

模式是 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

注意点:

  • 一个模式可以包含多个环境变量
  • 每个模式都会将环境变量中 NODE_ENV 的值设置为模式的名称
  • 可以通过为 .env 文件增加后缀来设置某个模式下特有的环境变量
  • 为一个特定模式准备的环境文件 (例如 .env.production) 将会比一般的环境文件 (例如 .env) 拥有更高的优先级
  • 此外,Vue CLI 启动时已经存在的环境变量拥有最高优先级,并不会被 .env 文件覆写
.env        # 在所有的环境中被载入
.env.local     # 在所有的环境中被载入,但会被 git 忽略
.env.[mode]     # 只在指定的模式中被载入,优先级高于.env和.env.local
.env.[mode].local  # 只在指定的模式中被载入,但会被 git 忽略,优先级高于.env和.env.local

例子:不同模式下,为axios指定不同的baseUrl

创建development模式的环境变量文件,项目根目录下新建.env.development文件

NODE_ENV=development
VUE_APP_BASE_URL=http://127.0.0.1:8080/

创建production模式的环境变量文件,项目根目录下新建.env.production文件

NODE_ENV=production
VUE_APP_BASE_URL=/

在src目录下main.js文件中使用环境变量

import Vue from 'vue'
import App from './App.vue'

// 导入axios
import axios from 'axios'
// 设置请求根路径,使用环境变量
axios.defaults.baseURL = process.env.VUE_APP_BASE_URL
// axios拦截器
axios.interceptors.request.use(config => {
 // 为请求头对象,添加Token验证的Authorization字段
 config.headers.Authorization = window.sessionStorage.getItem('token')
 // 在最后必须return config
 return config
})
// 挂载到vue
Vue.prototype.$http = axios

Vue.config.productionTip = false

new Vue({
 router,
 render: h => h(App)
}).$mount('#app')

也可以在其他vue组件中打印

console.log(process.env.NODE_ENV)
console.log(process.env.VUE_APP_BASE_URL)
console.log(this.$http.defaults.baseURL)

运行项目

npm run serve

例子:自定义模式

自定义一个fat模式

在项目根目录下新建环境变量文件.env.fat

NODE_ENV=fat
VUE_APP_BASE_URL=http://fat.com/

根目录下package.json中新增脚本命令

{
 "name": "vue_shop",
 "version": "0.1.0",
 "private": true,
 "scripts": {
  "serve": "vue-cli-service serve",
  "build": "vue-cli-service build",
  // 这条命令是我自定义的,通过--mode指定模式为fat
  "fat": "vue-cli-service serve --mode fat",
  "lint": "vue-cli-service lint"
 },
 "dependencies": {
  "axios": "^0.19.2",
  "core-js": "^3.4.4",
  "echarts": "^4.6.0",
  "element-ui": "^2.4.5",
  "vue": "^2.6.10",
  "vue-router": "^3.1.3"
 },
 "devDependencies": {
  "@vue/cli-plugin-babel": "^4.1.0",
  "@vue/cli-plugin-eslint": "^4.1.0",
  "@vue/cli-plugin-router": "^4.1.0",
  "@vue/cli-service": "^4.1.0",
  "@vue/eslint-config-standard": "^4.0.0",
  "babel-eslint": "^10.0.3",
  "babel-plugin-component": "^1.1.1",
  "eslint": "^5.16.0",
  "eslint-plugin-vue": "^5.0.0",
  "less": "^3.10.3",
  "less-loader": "^5.0.0",
  "vue-cli-plugin-element": "^1.0.1",
  "vue-template-compiler": "^2.6.10"
 }
}

运行命令

npm run fat

这时候项目中读取的,就是fat模式下的环境变量了

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

Javascript 相关文章推荐
让div层随鼠标移动的实现代码 ie ff
Dec 18 Javascript
非常有用的40款jQuery 插件推荐(系列二)
Dec 25 Javascript
两种方法实现文本框输入内容提示消失
Mar 17 Javascript
Easyui form combobox省市区三级联动
Jan 13 Javascript
jQuery的框架介绍
May 11 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
Aug 01 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
Sep 20 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
Feb 20 Javascript
bootstrap实现的自适应页面简单应用示例
Mar 09 Javascript
vue 实现强制类型转换 数字类型转为字符串
Nov 07 Javascript
深入了解Vue.js 混入(mixins)
Jul 23 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
Apr 09 #Javascript
微信小程序吸底区域适配iPhoneX的实现
Apr 09 #Javascript
加速vue组件渲染之性能优化
Apr 09 #Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
Apr 09 #Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
Apr 09 #Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
Apr 09 #Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
Apr 09 #Javascript
You might like
PHP的FTP学习(四)
2006/10/09 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
分享8个Laravel模型时间戳使用技巧小结
2020/02/12 PHP
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
python中threading超线程用法实例分析
2015/05/16 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
python爬虫实现中英翻译词典
2019/06/25 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
大学生入党思想汇报
2014/01/14 职场文书
特色蛋糕店创业计划书
2014/01/28 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
企业法人授权委托书
2014/04/03 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
软件售后服务方案
2014/05/29 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
个人委托函范文
2015/01/29 职场文书
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
Golang map映射的用法
2022/04/22 Golang