vue部署包可配置后台接口地址

有时候一个部署包可能要应用于不同服务器,这就需要频繁更换后台地址。
由此引申出了部署包可直接配置后台地址的需求,这样就不需要频繁打包了。

方法

1. public 新增 config.js 文件(会被恶意修改地址,不安全)

public 文件夹下的文件是不会被打包

// public/config.js
window.CUSTOM_CONFIG = {
	BASE_URL: 'http://localhost:9001',	// 后台接口地址 
}

config.js放置位置

同个文件夹下的index.html文件的head标签内引入config.js

<script src="<%= BASE_URL %>config.js" type='text/javascript'></script>

然后在需要的地方引入,如 axios 封装的request.js文件:

const config = {
    baseURL: window.CUSTOM_CONFIG.BASE_URL,		// 引入 config.js 的配置
    timeout: 550000,
}
service = axios.create(config);

2. public 新增一个 json 文件存放地址

// config.json
{
	"BASE_URL": "http://localhost:9001"
}

在这里插入图片描述
然后在 axios 封装的request.js文件下通过XMLHttpRequest获取
(网上有一些是直接用axios获取,但是我这里要同步操作,不然还没返回数据代码已经执行到下面去了,只能用XMLHttpRequest来获取)

// request.js
let xmlhttp = new XMLHttpRequest();
xmlhttp.open('get', './config.json', false);
xmlhttp.send(null);
let BASE_URL = JSON.parse(xmlhttp.responseText).BASE_URL;

let service = {};
const config = {
    baseURL: BASE_URL,
    timeout: 550000,
}
service = axios.create(config);

但是这样浏览器会出现提示,搜了一下说这个不会有什么影响?(强迫症可能会看着不爽)
浏览器出现提示

出现的问题

神奇的是根据上一篇文章“vue项目部署到IIS”部署到另一台服务器的时候,居然失败了!显示“跨域”。搜了好久发现好多文章都是一样的设置,后面让后台加了跨域的设置才成功了!
跨域
然后另一个问题出现了!!!
用ip地址访问的时候,后台接口地址还是显示localhost,不会自动切换到ip访问地址。
解决方案: 如果 ip 地址访问的时候,要将config.json里面的后台接口地址改成 ip 访问的地址才可以(这样不管是localhost还是ip地址都可以访问到)
个人猜测: 出现这样的原因是从json文件里获取的是字符串,地址相当于写死了,不会自动匹配成相应的IP地址(个人见解,欢迎指正!)
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 抱歉,我可以回答这个问题。Vue可以通过修改webpack配置文件中的devServer项来动态配置IP地址,同时需要在后端服务器中配置允许跨域请求。具体的步骤可以参考Vue官方文档或者其他开源社区的教程。 ### 回答2: Vue项目多地IP地址部署是指将项目部署到不同的地方,每个地方都有不同的IP地址。 实现多地IP地址部署主要需要以下几个步骤: 1. 确定各个地方的IP地址:根据实际情况,找到每个地方的IP地址,可以是局域网的内网IP地址,也可以是公网的外网IP地址。 2. 配置Vue项目的部署文件:在Vue项目的部署文件中,将各地的IP地址按照不同的环境进行配置。可以使用环境变量来实现动态配置,比如在配置文件中定义一个变量,根据不同的环境去读取相应的IP地址。 3. 后台配置动态IP:后台配置动态IP主要是指在服务器端根据不同的请求动态返回相应的IP地址。可以通过在后台数据库中存储各地的IP地址信息,根据请求的参数或者请求的地理位置信息,动态返回相应的IP地址。 通过以上步骤,就可以实现Vue项目的多地IP地址部署后台配置动态IP的需求。这样可以根据不同的地方灵活部署项目,并且通过后台配置动态IP可以根据不同的请求返回相应的IP地址,提供更好的用户体验。 ### 回答3: Vue.js是一种前端开发框架,可以轻松实现跨平台和多地部署。对于Vue项目的多地IP地址部署,我们需要相应的后台配置来实现动态IP。 首先,我们需要在后台配置文件中添加一个IP地址配置项。配置项可以是一个数组,包含了所有需要部署的IP地址。例如,配置项可以是如下的形式: ``` ipList: ["192.168.1.100", "192.168.1.101", "192.168.1.102"] ``` 然后,在Vue项目中,我们需要获取后台动态配置的IP地址,并根据这些IP地址来请求后端接口。这可以通过在Vue的API请求封装中实现。例如,我们可以创建一个`api.js`文件,用来封装所有的API请求。 首先,在`api.js`中引入Vue和Axios: ``` import Vue from 'vue' import axios from 'axios' ``` 然后,我们在`api.js`中定义一个`getBaseUrl`函数,用来获取后台配置动态IP地址: ``` function getBaseUrl() { // 这里可以根据需求获取后台配置动态IP地址 // 返回可用的IP地址 } ``` 接下来,在`api.js`中定义所有的API请求,例如: ``` export function getUserInfo() { const baseUrl = getBaseUrl() return axios.get(baseUrl + '/api/user/info') } ``` 在这个例子中,我们使用`getBaseUrl`函数获取后台配置动态IP地址,并拼接上对应的API路径来进行请求。 最后,在Vue组件中使用这些API请求即可: ``` import { getUserInfo } from '@/api' export default { mounted() { getUserInfo().then(res => { // 处理请求返回的数据 }) } } ``` 通过以上步骤,我们可以实现Vue项目的多地IP地址部署,并且后台配置动态IP。这样,不同的部署地点可以根据需求动态配置IP地址,实现灵活的部署和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值