小程序全局数据
- 小程序 JS 脚本运行在 JSCore 中,小程序的每个页面各自有一个 web-view 线程进行渲染,所以小程序切换页面时,小程序的 JS 脚本依然在同一个 JSCore 中。
- 所以 App实例是一个,不同页面之间可以通过 App 实例下的属性来共享数据。APP 构造器可以传递其他参数作为全局变量,达到全局数据共享的目的。
- 因为所有的脚本逻辑都跑在同一个 JSCore 中,页面使用 SetTimeOut 或者setInterval 定时器时,在跳转其他页面之后,要进行清理
页面构造器 Page({Object object})
- data 声明做数据绑定的初始化数据
- 生命周期
- 页面用户行为回调
- onPullDownRefresh: 监听用户下拉刷新事件。需要在 app.json 中或者 page.json 中进行设置
- onReachBottom:监听上拉触底的事件,同样需要配置
- onPageScroll:监听用户滑动页面时间,参数包含页面在垂直方向上已滚动的距离
- onShareAppMessage: 监听转发,只有配置了这个,右上角才会显示“转发”按钮
// 监听下拉刷新 - 需配置 app.json 或者 page.json 的enablePullDownRefresh为 true onPullDownRefresh() { console.log('onPullDownRefresh') }, // 监听页面的触底事件,需配置 app.json 或者 page.json 的onReachBottomDistance(触底距离) onReachBottom() { console.log('onReachBottomDistance') }, // 监听页面的滚动,可以获取页面垂直方向滚动距离 onPageScroll (object) { console.log(object.scrollTop) }, // 监听用户的转发-需要自定义一个返回对象,用来自定义分享的内容 onShareAppMessage() { console.log('onShareAppMessage 页面分享') }, // 监听右上角的收藏,Beta 版本支持安卓 onAddToFavorites() { console.log('监听收藏,暂时只有安卓支持') }
- 宿主环境为页面构造器提供了 setData 方法,第二个参数是 setData 对页面进行渲染完毕后触发
- 可以以数据路径的形式给出 key
- 每次只设置需要改变的最小单位数据,可以提升性能
- 直接修改 data 不会有效果,必须调setData
- setData 是逻辑层与渲染层的通信,有消耗,为了提升性能,每次设置的数据不应超过1024 KB
- data 中的数据不要设置为 undefined,否则可能会有不可预料的 bug
tabbar
小程序提供了原生的 tabbar 的支持,需要我们在 app.json 中进行配置
API
大多数 api 都接受一个回调函数,或者一个对象作为参数,对象一般由 success,fail,complete 构成。其中complete不管调用成功与否,都会调用
兼容
- wx.canIUse
- wx.getSystemInfo