场景叙述
近些时日有个好兄弟委托我帮他部署了一个系统(基于Windows7),该系统(以下简称A系统)为工厂内部使用,后端用的PHP(fastadmin框架),前端用的uni ,不能连公网,厂区内每个部门需要单独部署一套A系统 ,每个部门的内部的专员,通过自己部门的电脑内网访问系统 。也就是说 ,10个部门需要部署十次,而且如果没配置静态IP ,每次路由器重启后,都要到 unpackage\dist\build\web\static\js
中搜索dev
修改为新的IP ,这样不仅麻烦,而且容易出错,而且厂区内没有程序员,操作起来太繁琐了 。
于是我今晚便突发奇想,想通过自动化来解决这个问题。
准备优化
此时可以忽略“部署了几次A系统”这件事了 。 一开始我想的是,在主机本地请求localhost:8092
时 , 通过后端返回网卡的IP ,我也搜了百度实现了 , 实践后发现,主机本地缓存的IP没问题,但是其他客户端访问的时候,由于无法共享主机的缓存,第一次请求都是404的,因此本方案失败 。
最终
然后想,既然这样 ,每台机器访问 hostip:8092
之后,点击按钮进入设置界面 ,手动保存主机IP ,这样就行了,也确实可行 。但我觉得还是繁琐,又想起之前的经验,js能获取地址栏的值,我想截取一下 应该是可以的 ,于是乎直接开干 :
完整url 是 hostip:8092/tushu/
onShow(option) {
// 每次页面显示时都会调用
var url = window.location.href;
var last = url.lastIndexOf("/tushu/");
var host = url.substring(0, last);
console.log(url, host);
uni.setStorage({
key: "host",
data: host,
})
},
,这样,只要前端页面能正常打开,就能读取正确的 host:port
,直接缓存下来,下次请求接口,就是正确的接口地址了。问题解决,这样不管路由器一天重启几次,只要一个 ipconfig
,就搞定 , 给维护系统的工人 节省了时间。