小程序的启动
a.微信客户端在打开小程序之前,会把整个小程序的代码包下载到本地;
b.通过 app.json 的 pages 字段就可以知道你当前小程序的所有页面路径;
c.小程序启动之后,在 app.js 定义的 App 实例的 onLaunch 回调会被执行;
生命周期
初始化 onLanch、 onLoad、 onready、 显示 onShow、 隐藏 onHide、 onUnload 页面卸载、运行机制
当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台。需要注意的是:只有当小程序进入后台一定时间(目前是5min,可能会更长),或者系统资源占用过高,或者用户主动删除才会被真正的销毁。
小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」
假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是**热启动**; **冷启动**指的是用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动。
更新机制
小程序冷启动时如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。 如果需要马上应用最新版本,可以使用 wx.getUpdateManager API 进行处理。
关于授权
getUserInfo 和 login
小程序的login已经可以完成登录,可以建立账号体系了,getUserInfo只是获取额外的用户信息。
在login获取到code,然后发送到开发者后端,开发者后端再通过接口去微信后端换取到openid和sessionKey(并且现在会将unionid也一并返回)之后,然后把3rd_session返回给前端,就已经完成登录行为。login行为是静默,不必授权的,不会对用户造成骚扰。
getUserInfo只是为了提供更优质的服务而存在,比如展示头像昵称,判断性别,通过unionId和其他公众号上已有的用户画像结合起来提供历史数据。所以不必在刚刚进入小程序的时候就强制要求授权。
推荐使用方法:调用wx.login,获取code,然后从微信后端换取到sessionKey,用于解密getUserInfo返回的敏感数据。
使用wx.getSetting获取用户的授权情况,如果用户已经授权,直接调用 API wx.getUserInfo获取用户最新的信息
用户未授权,在界面中显示一个按钮提示用户登入,当用户点击并授权后就获取到用户的最新信息,可以将信息进行展示或者发送给后端。