如何修改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身份证验证超强脚本
Oct 26 Javascript
Javascript中浮点数相乘的一个解决方法
Jun 03 Javascript
详解JavaScript中的异常处理方法
Jun 16 Javascript
js游戏人物上下左右跑步效果代码分享
Aug 28 Javascript
Listloading.js移动端上拉下拉刷新组件
Aug 04 Javascript
利用jquery实现实时更新歌词的方法
Jan 06 Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 Javascript
荐书|您有一份JavaScript书单待签收
Jul 21 Javascript
详解Vue-Cli 异步加载数据的一些注意点
Aug 12 Javascript
angular.js实现购物车功能
Oct 23 Javascript
layui 表单标签的校验方法
Sep 04 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
Aug 14 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
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
js中判断控件是否存在
2010/08/25 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
下载糗事百科的内容_python版
2008/12/07 Python
python随机生成指定长度密码的方法
2015/04/04 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
python实现飞机大战
2018/09/11 Python
Python模块常用四种安装方式
2020/10/20 Python
七年级历史教学反思
2014/02/05 职场文书
护理中职生求职信范文
2014/02/24 职场文书
学习决心书范文
2014/03/11 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
关于公司年会的开幕词
2016/03/04 职场文书