一、需求
因为甲方的环境很多,一套代码要适配多套环境,要求能够通过打包后的静态文件更改发送请求的接口的域名。
二、思路
通过在public>static>config.js文件下给window顶级对象设置一个属性,后面再通过该属性获取接口域名,来实现动态修改。
三、实现
首先,config文件夹下的config.js文件设置context属性。
然后在public文件下的 static文件下创建config.js文件
最后找到入口文件,引入public > static > config.js, 在umi框架中,document.ejs是入口文件。因此在这里设置,然后使用 <%= %> 语法引入文件。
这里需要注意的是,正常来说引入一个文件直接按相对路径来找就可以了,但是在这种项目中,我们需要找到他打包后的相对路径,这个文件打包后目录结构大概是这样。
所以,在config文件下的config.js 文件中的 context.publicPath 应该填 './static/',然后再 在document.ejs中引入<script src="<%= context.publicPath + 'config.js'%>"></script>。
四、总结
其实没有啥好总结的,就是一个引入文件的方法,最开始我试着直接引入js文件,但是好像不成功,不清楚是路径地址又问题还是咋回事,于是上官网查到了这种引入方法,唯一需要注意的就是引入的地址不是打包前的相对地址,而是打包后的相对地址。