临时接手的救火项目,使用uniapp(没用过)开发,要求同时发布H5与APP版本,后端接口是统一的。

由于众所周知(除了我)的原因,两个版本在引入外部配置js的方法上有些出入,所以接手的项目在打包H5和APP的时候要分别修改不同的地方(H5版本配置在一个config.js里面,通过html模板加载),APP版本写在了app.vue里面。

由于几次打包忘记修改了相应配置造成了很不好的影响,深感不便。处于无知者无畏的精神,决定统一配置,没想到一如大坑深似海——

尝试了几个方法,要么H5能用,但APP里面读取不到,要么APP里面好使,H5版本config.js被合并,完全成了摆设。。。

百度都快被翻烂了也没找到合适的方法,然而吹出去的牛皮想要收回来也不易,虽然脸被啪啪的生疼,也要硬着头皮肝下去!

好在功夫不负有心人,研究出来的解决方法如下:(副作用暂不知道)

1. config.js里面:

//接口地址
const ServerUrl="http://127.0.0.1";
try{
    //给H5用的
	window.ServerUrl=ServerUrl;
}catch(e){
    //APP里面用不了window
	console.log("NOT FOR APP");
}
//给APP用的
export default ServerUrl;

2. main.js中

//H5版本动态引入config.js
//#ifdef H5
const script = document.createElement('script')
script.src = './static/config.js'
script.type = 'module'
//必须等config加载完毕再起vue
script.onload = () => {
	const app = new Vue({
		store,
		...App
	})
	app.$mount()
}
document.head.appendChild(script)
//#endif
//APP版本
//#ifdef APP-PLUS
import ServerUrl from '@/static/config.js';
const app = new Vue({
	store,
	...App
})
app.$mount()
//#endif

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐