如何修改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入门教程 Cookies
Jan 31 Javascript
javascript showModalDialog模态对话框使用说明
Dec 31 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
Jan 21 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 Javascript
Extjs实现下拉菜单效果
Apr 01 Javascript
AngularJS入门教程之链接与图片模板详解
Aug 19 Javascript
Webpack 服务器端代码打包的示例代码
Sep 19 Javascript
基于jquery的on和click的区别详解
Jan 15 jQuery
JS中的事件委托实例浅析
Mar 22 Javascript
详解Next.js页面渲染的优化方案
Jan 27 Javascript
浅析vue-router实现原理及两种模式
Feb 11 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编码转换
2012/11/05 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
php计算一个文件大小的方法
2015/03/30 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
Javascript 复制数组实现代码
2009/11/26 Javascript
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
Bootstrap插件全集
2016/07/18 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
Python Django搭建网站流程图解
2020/06/13 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
EJB的基本架构
2016/09/22 面试题
军训自我鉴定200字
2014/02/13 职场文书
会计师事务所实习证明
2014/11/16 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
高中教师个人工作总结
2015/02/10 职场文书
信访工作个人总结
2015/03/03 职场文书
实践论读书笔记
2015/06/29 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书