如何修改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 相关文章推荐
JavaScript 图像动画的小demo
May 23 Javascript
dotopAlert 提示用户需安装播放器的代码
Sep 17 Javascript
ie8本地图片上传预览示例代码
Jan 12 Javascript
node.js中的path.extname方法使用说明
Dec 09 Javascript
jquery代码实现简单的随机图片瀑布流效果
Apr 20 Javascript
JS实现的论坛Ajax打分效果完整实例
Oct 31 Javascript
javascript创建cookie、读取cookie
Mar 31 Javascript
JS实现动态生成html table表格的方法分析
Jul 11 Javascript
JavaScript模板引擎应用场景及实现原理详解
Dec 14 Javascript
详解Vue 如何监听Array的变化
Jun 06 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
Apr 08 Javascript
一文帮你理解PReact10.5.13源码
Apr 03 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
我的论坛源代码(四)
2006/10/09 PHP
php列出一个目录下的所有文件的代码
2012/10/09 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
python实现简单socket通信的方法
2016/04/19 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
小学作文评语大全
2014/04/21 职场文书
超市开店计划书
2014/04/26 职场文书
怎样写离婚协议书
2014/09/10 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
本溪关门山导游词
2015/02/09 职场文书
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS