小程序生命周期
一个完整的小程序执行的生命周期:
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全局变量的原因。
文章转载于:https://www.jianshu.com/p/37880535dec6
原著是一个有趣的人,若有侵权,请通知删除
还没有人抢沙发呢~