如何修改Vue打包后文件的接口地址配置的方法


Posted in Javascript onApril 22, 2020

1、背景

常规的vue项目分为本地环境和生产环境,我们只要对 config 文件夹下的 dev.env.jsprod.env.js 做相应的配置即可。但是最近在做的项目中,涉及到私有化部署,就是对应的生产环境的地址,不是唯一的。如果每次都修改一个地址,再打包文件进行部署,过程繁琐且低效。那么如何把环境地址设置成可配置的,不需要再构建代码就能直接生效呢?

2、可选方案

进行了调研后,网上介绍的方案有2种:

1)在static上设置一个config.js,把配置的参数设置成 window 下的全局变量。这种方案的确可行,但是,但是,不安全!!! 如果请求地址被恶意修改,后果不太好~

2)使用 generate-asset-webpack-plugin 插件,配置一大坨后生成一个静态文件,然后通过请求的方式,获取需要的数据,这种方法可以解决安全性问题,但是,但是,有点小麻烦啊~

因此,博主根据实际项目,将两种方法结合在一起,形成了一个中和的方案。

3、执行方案配置步骤

第一步:在 static 文件夹中新建一个 config.json,把你要写的配置写入

{
// 基本访问地址
"BASE_URL": "http://webhmy.com"
}

放在static下的文件,可以被直接访问。

第二步:在 main.js 中请求定义的配置文件,并放到 Vue.prototype 中,使全局可访问,注意,这里把new Vue()放在请求里执行,是防止请求与页面渲染之间的时间差异化导致值获取不到,因此这样比较保险。

// 定义外部接口可配置
import axios from 'axios'
let startApp = function () {
 axios.get('/static/config.json').then((res) => {
  // 基础地址
  Vue.prototype.BASE_URL = res.BASE_URL;

  new Vue({
   el: '#app',
   router,
   store,
   components: {
    App
   },
   template: '<App/>'
  })
 })
}

startApp()

第三步:如果在 .vue 文件中使用:

console.log(this.BASE_URL)
// http://webhmy.com

如果在一些 .js 文件中,可以调用Vue后再使用:

import Vue from 'vue'
console.log(Vue.prototype.BASE_URL)
// http://webhmy.com

打包修改

执行 npm run build 可以看到打包文件夹 static 文件夹下的 config.json,之后可以修改配置,刷新页面即可。

如何修改Vue打包后文件的接口地址配置的方法

【补充】
因为请求和打包操作的时差性,哪怕它是请求本地的文件,但是有时发现它的请求会比我们系统的第一个请求慢了,这个时候就会失效。

解决方法:相信我们的项目中都对请求进行了一些封装操作,只要将对应的baseURL的值改成实时获取Vue.prototype.BASE_URL的值,就可以保证接口请求能够准确获取到了~

如何修改Vue打包后文件的接口地址配置的方法

到此这篇关于如何修改Vue打包后文件的接口地址配置的方法的文章就介绍到这了,更多相关Vue打包后接口地址配置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
Jan 04 Javascript
js获取客户端外网ip的简单实例
Nov 21 Javascript
JavaScript数值转换的三种方式总结
Jul 31 Javascript
setTimeout()递归调用不加引号出错的解决方法
Sep 05 Javascript
JavaScript三元运算符的多种使用技巧
Apr 16 Javascript
jquery实现弹出层登录和全屏层注册特效
Aug 28 Javascript
Bootstrap前端开发案例一
Jun 17 Javascript
AngularGauge 属性解析详解
Sep 06 Javascript
JavaScript用构造函数如何获取变量的类型名
Dec 23 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
JS实现的新闻列表自动滚动效果示例
Jan 30 Javascript
TypeScript 运行时类型检查补充工具
Sep 28 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
Apr 22 #Javascript
JS脚本实现定时到网站上签到/签退功能
Apr 22 #Javascript
微信小程序实现手指拖动选项排序
Apr 22 #Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
Apr 22 #Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
Apr 22 #Javascript
Vue computed 计算属性代码实例
Apr 22 #Javascript
js 解析 JSON 数据简单示例
Apr 21 #Javascript
You might like
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
PHP加密解密实例分析
2015/12/25 PHP
CI框架的安全性分析
2016/05/18 PHP
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
浅析Python中的join()方法的使用
2015/05/19 Python
Ubuntu下安装PyV8
2016/03/13 Python
Python之web模板应用
2017/12/26 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
Python下简易的单例模式详解
2019/04/08 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
师范应届生求职信
2013/11/15 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript