一些可能不够直观、需要特别关心的点。
小程序运行机制
JS 逻辑代码在一个线程中;每个页面在单独的渲染线程中。因此在页面 1 设置的 setTimeout,跳转到页面 2 也存在,如果不用了需要清除掉。
App 及 Page 的差异
- App 管理全局数据和整个小程序的生命周期
- Page 管理当前页面数据和当前页面的生命周期
对于它们的生命周期和用户动作触发的事件,需要认真看看事件会在什么时候被触发:
- App:https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html
- Page:https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html
Page 中 setData
的 key 可以表示复杂结构
Page({
data: {
a: 1, b: 2, c: 3,
d: [1, {text: 'Hello'}, 3, 4]
}
onLoad: function(){
// 可以用 'd[1].text' 直接设置到 `d` 里面的属性
this.setData({'d[1].text' : 'World'})
}
})
TabBar 页面及普通页面
微信小程序在设计上,认为 TabBar 的页面是顶级页面,从 API 的设计上可以看到:
wx.navigateTo
和wx.redirectTo
只能打开非 TabBar 页面,wx.switchTab
只能打开 Tabbar 页面
因此 wx.navigateTo
和 wx.redirectTo
只适用于某个 tab 下的页面跳转。