Appearance
8.5 运行机制
- 运行机制:视图层→逻辑层→CDM(查看是否有更新)→网络请求
- 生命周期
应用生命周期:
- onLaunch(Object object):小程序初始化完成时触发,全局只触发一次。参数也可以使用
wx.getLaunchOptionsSync获取。 - onShow(Object object):小程序启动,或从后台进入前台显示时触发。也可以使用
wx.onAppShow绑定监听。 - onHide():小程序从前台进入后台时触发。也可以使用
wx.onAppHide绑定监听。 - onError(String error):小程序发生脚本错误或 API 调用报错时触发。也可以使用
wx.onError绑定监听。 - onPageNotFound(Object object):小程序要打开的页面不存在时触发。也可以使用
wx.onPageNotFound绑定监听。 - onUnhandledRejection(Object object):小程序有未处理的 Promise 拒绝时触发。也可以使用
wx.onUnhandledRejection绑定监听。 - onThemeChange(Object object):系统切换主题时触发。也可以使用
wx.onThemeChange绑定监听。
示例代码:
js
App({
onLaunch (options) {
// 小程序初始化完成时触发,全局只触发一次
console.log('小程序启动', options)
},
onShow (options) {
// 小程序启动,或从后台进入前台显示时触发
console.log('小程序显示', options)
},
onHide () {
// 小程序从前台进入后台时触发
console.log('小程序隐藏')
},
onError (msg) {
// 小程序发生脚本错误或 API 调用报错时触发
console.log('小程序错误', msg)
},
onPageNotFound (res) {
// 小程序要打开的页面不存在时触发
wx.redirectTo({
url: 'pages/index/index'
})
},
onUnhandledRejection (res) {
// 小程序有未处理的 Promise 拒绝时触发
console.log('未处理的 Promise 拒绝', res)
},
onThemeChange (res) {
// 系统切换主题时触发
console.log('主题变化', res.theme)
},
globalData: 'I am global data'
})页面生命周期:
- onLoad(Object object):页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。
- onShow():页面显示时触发。每次打开页面都会调用一次。
- onReady():页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
- onHide():页面隐藏时触发。当
navigateTo或底部tab切换时调用。 - onUnload():页面卸载时触发。当
redirectTo或navigateBack的时候调用。 - onRouteDone():页面路由完成时触发。页面路由动画完成时触发,此时页面已经完全显示。
示例代码:
js
Page({
data: {
title: '页面标题'
},
onLoad(options) {
// 页面加载时触发,一个页面只会调用一次
console.log('页面加载', options)
// 获取页面参数
if (options.id) {
this.setData({
id: options.id
})
}
},
onShow() {
// 页面显示时触发,每次打开页面都会调用一次
console.log('页面显示')
},
onReady() {
// 页面初次渲染完成时触发,一个页面只会调用一次
console.log('页面渲染完成')
// 此时可以安全地操作DOM
},
onHide() {
// 页面隐藏时触发,当navigateTo或底部tab切换时调用
console.log('页面隐藏')
},
onUnload() {
// 页面卸载时触发,当redirectTo或navigateBack的时候调用
console.log('页面卸载')
// 清理定时器、事件监听等
},
onRouteDone() {
// 页面路由完成时触发,页面路由动画完成时触发
console.log('页面路由完成')
// 此时页面已经完全显示,可以执行一些需要等待动画完成的操作
}
})TIP
5s后挂起,30min后自动删除进程。