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 相关文章推荐
IE6弹出“已终止操作”的解决办法
Nov 27 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
Oct 12 Javascript
深入理解JavaScript中的传值与传引用
Dec 09 Javascript
javascript实现的猜数小游戏完整实例代码
May 10 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
May 26 Javascript
js获取一组日期中最近连续的天数
May 25 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
Jul 11 Javascript
vue router仿天猫底部导航栏功能
Oct 18 Javascript
微信小程序新手教程之启动页的重要性
Mar 03 Javascript
JSX在render函数中的应用详解
Sep 04 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 10 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
Sep 24 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网上调查系统
2006/10/09 PHP
抓取YAHOO股票报价的类
2009/05/15 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
php数组指针操作详解
2017/02/14 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
原生JavaScript实现todolist功能
2018/03/02 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
layui--js控制switch的切换方法
2019/09/03 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
Python入门篇之字典
2014/10/17 Python
Flask之flask-session的具体使用
2018/07/26 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
工厂厂长的职责
2013/12/12 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书