跨平台应用开发进阶(四十九)由环境切换引发的页面通讯机制思考

一、前言

APP开发完毕,app store上架审核前存在后台晚于APP发布的场景,鉴于APP首页页面渲染依赖于后台接口,且苹果上架审核人员对于页面渲染效果比较苛刻,故制定出应用启动时默认连接生产环境,通过接口查询识别到非发版版本时切换到UAT环境的应对策略。

二、解决方案

uni-app实现过程中,APP.vue作为首加载文件,环境切换在此页面的onLoad方法中完成。环境切换完成后,通过页面通讯方式完成页面接口间的依赖关系制定。

APP.vue 通过触发全局的自定义事件方式,告知全局环境切换已完成。

javascript 复制代码
uni.$emit('switchRequestAddress', {msg: true});

APP首页通过监听全局的自定义事件方式,获悉全局环境切换已完成,可正常进行接口调用。

javascript 复制代码
uni.$once('switchRequestAddress', data => {
	console.log('监听到事件来自 update ,携带参数 msg 为:' + data.msg);
})

通过以上方式便可实现应用正式上架前根据生产环境信息动态切换接口请求环境效果。

感悟: 总体来看,uni-app开发过程中遇到的问题均可以在uni-app官方文档中找到相应的解决方案,所以技术文档还是要熟悉。

2.1 uni.$on(eventName,callback)uni.$once(eventName,callback) 的区别

  • uni.$on(eventName,callback):监听全局的自定义事件,事件由 uni.$emit 触发,回调函数会接收事件触发函数的传入参数。
  • uni.$once(eventName,callback):监听全局的自定义事件,事件由 uni.$emit 触发,但仅触发一次,在第一次触发之后移除该监听器。

三、拓展阅读

相关推荐
修己xj2 小时前
告别手动存图!这款叫 Fatkun 的浏览器插件,简直是素材收集神器
前端
袋鼠云数栈3 小时前
从前端到基础设施,ACOS 如何打通企业全链路可观测
运维·前端·人工智能·数据治理·数据智能
AskHarries3 小时前
系统提示词、开发者指令和用户输入的优先级
java·前端·数据库
Moment3 小时前
长上下文会最终杀死 Rag 吗?
前端·javascript·后端
qcx234 小时前
【系统学AI】25 论文导读 ①:两篇改变 AI 的开山之作——Attention Is All You Need & ReAct
前端·人工智能·react.js·transformer
kyriewen5 小时前
大文件上传最全指南:分片、断点续传、秒传,一篇就够了
前端·javascript·面试
郑洁文6 小时前
基于Python的Web命令执行漏洞自动化检测系统
前端·python·网络安全·自动化
新酱爱学习6 小时前
手搓 10 个 Skill 后,我把重复劳动收敛成了一套零依赖 CLI 工具
前端·javascript·人工智能
IT_陈寒6 小时前
Python的线程池居然把我坑在了垃圾回收这块
前端·人工智能·后端
研☆香7 小时前
es6新特性功能介绍(一)
前端·ecmascript·es6