小程序生命周期
一个完整的小程序执行的生命周期:
app.onLaunch -> app.onShow -> page1.onLoad -> page1.onShow -> page1.onReady
(打开程序,第一个页面page1加载完成)
-> page1.onHide -> page2.onLoad ->page2.onShow -> page2.onReady
(从第一个页面新打开page2)
-> page2.onUnload -> page1.onShow ->...->app.onUnload
(关闭page2,返回page1,...退出小程序)
一个page的生命周期从onLoad事件开始,整个生命周期内onLoad、onReady、onUnload这三个事件仅执行一次,而onHide和onShow事件在每次页面隐藏和显示时都会触发。当用户手动触发左上角的退出箭头时,小程序仅触发app.onHide,下次进入小程序时会触发app.onShow以及当前page.onShow。仅当小程序在后台运行超过一定时间未被唤起、或者用户手动在小程序的控制栏里点击退出程序、或者小程序内存占用过大被关闭时,小程序将被销毁,会触发app.onUnload事件。
生命周期代码:
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--页面启动
*/
onLaunch: function() {
// 启动时执行的初始化工作
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
// 页面加载时执行的初始化工作
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
// 页面就续后触发执行的操作
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
// 小程序启动或从后台进入前台时,触发执行的操作
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
// 小程序从前台进入后台时,触发执行的操作
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
// 页面关闭时触发执行的操作
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
小程序线程
每个小程序分为2个线程,view与appSer-ver。
- view线程负责解析渲染页面(wxml和wxss文件)
- appServer线程负责运行js。appSer-ver线程运行在jsCore中(安卓下运行在X5中,开发工具中运行在nwjs中)。
由于js不跑在WebView里,就不能直接操纵DOM和BOM,这就是小程序没有window全局变量的原因。