小程序采坑记录
小程序基础
做小程序前需要看一遍的文档
- 微信小程序wxss设置样式 https://www.cnblogs.com/yang-shuai/p/6899430.html
- 有用!关于微信小程序,那些开发文档没有告诉你的 https://zhuanlan.zhihu.com/p/23536784
- 小程序开发指南 链接略长,点我前往
- 微信小程序常见Q&A 链接略长,点我前往
- 开发者社区:https://developers.weixin.qq.com/
- 开发文档:https://developers.weixin.qq.com/miniprogram/dev/
- 微信公众平台:https://mp.weixin.qq.com/(每个服务号/订阅号/小程序<小游戏为小程序分支>对应一个单独账户)
- 微信小程序开发资源汇总:https://github.com/justjavac/awesome-wechat-weapp
- 微信小程序wepy框架开发资源汇总:https://github.com/aben1188/awesome-wepy
- 高颜值、好用、易扩展的微信小程序 UI 库:https://github.com/youzan/zanui-weapp
截止2018年的框架选型
问题总结
如何在微信小程序的页面间传递数据? http://www.ifanr.com/minapp/830664 用mpvue的话可以直接使用vuex,其他方案:使用app.js里的全局变量;获取本地缓存storage;使用跳转时的option里参数;
微信小程序-navigator 跳转url传递参数 https://blog.csdn.net/u013778905/article/details/59141486
微信小程序平台常见拒绝情形 https://developers.weixin.qq.com/miniprogram/product/reject.html#36-UI-规范
小程序与小游戏获取用户信息接口调整,请开发者注意升级 为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。从2018年4月30日开始,小程序与小游戏的体验版、开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败。正式版暂不受影响。开发者可使用以下方式获取或展示用户信息: 使用 button 组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息。 https://developers.weixin.qq.com/miniprogram/dev/component/button.html
弹出模态框时禁止页面滚动 页面main.json : "disableScroll": true 页面整个布局用scroll-view作为根节点包裹所有view,并动态绑定scroll-view的scroll-y属性
<scroll-view scroll-y="{{isScroll}}"></scroll-view>
canvas圆形图片裁剪 const ctx = wx.createCanvasContext('shareCanvas') // 绘制头像 ctx.arc(transitionPX(94 + headSize),transitionPX(234 + headSize),headSize/2,0,2*Math.PI); ctx.clip(); ctx.drawImage(this.userInfoAvatarUrl, transitionPX(94), transitionPX(234), headSize, headSize);
mpvue框架下,切换组件时个别机型初始化语音未播放问题
设置500毫秒的超时器即可,其实很多时候均可用超时器解决类似问题
setTimeout(this.playGuideVoice, 1000)
小程序组件【cover-image】的src图标路径,支持临时路径、网络地址(1.6.0起支持)、云文件ID(2.2.3起支持)。暂不支持base64格式.因为此组件经常是小图标,会被处理成base64,所以此处要特别注意
运行机制
小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」。 假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是热启动;冷启动指的是用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动。
更新机制
小程序冷启动时如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。 如果需要马上应用最新版本,可以使用 wx.getUpdateManager API 进行处理。
运行机制
- 小程序没有重启的概念
- 当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是5分钟)会被微信主动销毁
- 当短时间内(5s)连续收到两次以上收到系统内存告警,会进行小程序的销毁
再次打开逻辑
基础库 1.4.0 开始支持,低版本需做兼容处理
用户打开小程序的预期有以下两类场景:
A. 打开首页: 场景值有 1001, 1019, 1022, 1023, 1038, 1056
B. 打开小程序指定的某个页面: 场景值为除 A 以外的其他
当再次打开一个小程序逻辑如下:
上一次的场景 | 当前打开的场景 | 效果 |
---|---|---|
A | A | 保留原来的状态 |
B | A | 清空原来的页面栈,打开首页(相当于执行 wx.reLaunch 到首页) |
A 或 B | B | 清空原来的页面栈,打开指定页面(相当于执行 wx.reLaunch 到指定页) |