微信小程序 myqy-c-wechat 是用 uni-app(Vue)写的。一次编码多端跑,听着省事,真做起来,坑都在"差异"上。
BGM 播放:一个开关的前后
背景音乐由 enable_bgm 标志控制。逻辑很简单——开就播,关就停——但真正麻烦的是生命周期:页面切后台、锁屏、来电,音频行为各平台不一。
// 由 enable_bgm 决定要不要初始化背景音 if (config.enable_bgm) { this.bgm = uni.createInnerAudioContext(); this.bgm.src = "/static/bgm.mp3"; this.bgm.loop = true; }
经验:把"要不要播"和"怎么播"分开,开关只管前者,后者无脑执行,逻辑才好测。
uni-app 的边界感
- 能用条件编译
#ifdef MP-WEIXIN隔离平台差异,别靠运行时判断糊弄; - 小程序没有 window/document,用到浏览器的库要先确认兼容;
- 真机调试永远比模拟器更真实,BGM 和权限尤其。
一句话
跨端框架省的是重复,省不掉的是"每个端都有自己的脾气"。