如何修改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 相关文章推荐
20个非常有用的PHP类库 加速php开发
Jan 15 Javascript
IE8下关于querySelectorAll()的问题
May 13 Javascript
JQuery文本框高亮显示插件代码
Apr 02 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
Sep 10 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
Jun 26 Javascript
JS不间断向上滚动效果代码
Dec 25 Javascript
js获取光标位置和设置文本框光标位置示例代码
Jan 09 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
node.js发送邮件email的方法详解
Jan 06 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
Mar 05 Javascript
浅探express路由和中间件的实现
Sep 30 Javascript
d3.js实现图形拖拽
Dec 19 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 结果集的分页实现代码
2009/03/10 PHP
深入了解PHP类Class的概念
2012/06/14 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
python矩阵的转置和逆转实例
2018/12/12 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
python实现的自动发送消息功能详解
2019/08/15 Python
了解一下python内建模块collections
2020/09/07 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
2014年底工作总结
2014/12/15 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
JavaScript实现两个数组的交集
2022/03/25 Javascript