代码的生命周期就是一个对象的生老病死,通常只程序从创建、开始、暂停、唤起、停止、写在的过程。小程序的生命周期又可分为应用生命周期和页面生命周期。在此分别介绍:
一、应用生命周期
应用生命周期指的是小程序本身的初始化加载、方法以及最终被销毁的过程
1.用户首次打开小程序,出发onLunch,用于监听小程序的初始化,整个应用生命周期中指值触发一次
2.初始化之后,出发onShow监听小程序,小程序启动或者从后台进入前台显示,会触发onShow
3.小程序从其那台进入后台,出发onHinde方法
4.小程序在后台允许一定时间,或者系统资源占用过高,会被销毁
注意:
1.App()函数用来注册一个小程序。接受Object参数,其指定小程序的生命周期回调等(最外层的整个{ }就是一个object 参数).一般有
onLaunch
监听小程序初始化、onShow
监听小程序显示、onHide
监听小程序隐藏等生命周期回调函数2.App()必须在app.js中调用,必须调用且只能调用一次
代码:
//app,js App( { onLaunch:function() { console.log('onLaunch监听小程序初始化.小程序初始化完成时,全局指出发一次'); }, onShow:function() { console.log('onShow监听小程序显示。小程序启动,或者从后台进入前台时'); }, onHide:function() { console.log('onHide监听小程序隐藏,小程序从前台进入后台时'); } } )
onLaunch, onShow 方法会返回一个参数对象, 里面包含了三个参数 , path,query和scene ,path是打开小程序的路径
query是打开小程序页面url的参数,scene是打开小程序的场景值
二、页面的生命周期
Page(Object)
函数用来注册一个页面。接受一个
Object` 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。1.小程序注册完成后,加载页面,触发onLoad方法。
2.页面载入后触发onShow方法,显示页面。
3.首次显示页面,会触发onReady方法,渲染页面元素和样式,一个页面只会调用一次。
4.当小程序后台运行或跳转到其他页面时,触发onHide方法。
5.当小程序有后台进入到前台运行或重新进入页面时,触发onShow方法。
6.当使用重定向方法wx.redirectTo(object)或关闭当前页返回上一页wx.navigateBack(),触发onUnload。
//index.js Page({ data: { // 页面的初始数据 text: "This is page data." }, onLoad: function(options) { // 生命周期回调—监听页面加载 }, onReady: function() { // 生命周期回调—监听页面初次渲染完成 }, onShow: function() { // 生命周期回调—监听页面显示 }, onHide: function() { // 生命周期回调—监听页面隐藏 }, onUnload: function() { // 生命周期回调—监听页面卸载 }, onPullDownRefresh: function() { // 监听用户下拉动作 }, onReachBottom: function() { // 页面上拉触底事件的处理函数 }, onShareAppMessage: function () { // 用户点击右上角转发 }, onPageScroll: function() { // 页面滚动触发事件的处理函数 }, onResize: function() { // 页面尺寸改变时触发 }, onTabItemTap(item) { // 当前是 tab 页时,点击 tab 时触发 console.log(item.index) console.log(item.pagePath) console.log(item.text) }, // 任意的函数,在页面的函数中用 this 可以访问 viewTap: function() { this.setData({ text: 'Set some data for updating view.' }, function() { // this is setData callback }) }, // 任意数据,在页面的函数中用 this 可以访问 customData: { hi: 'MINA' } })
三、小程序路由
小程序以栈的形式维护页面,当路由发生变化时页面栈的表现如下:
实际操作
1、页面A入栈
注:onReady是在onShow之后触发;
onReady和onLoad一样只在页面入栈时渲染一次;
2、页面A->页面B(通过redirectTo跳转,A页面出栈,B页面入栈)
A页面触发onUnload(注意,此处没有触发onHide);
B页面触发onLoad、onShow、onReady;
3、页面A->页面B(通过navigationTo跳转,A页面不出栈,B页面入栈)
A页面触发onHide;
B页面触发onLoad、onShow、onReady;
4、页面A->页面B,当页面B回到页面A(通过navigationBack返回,下面是:页面B回到页面A时触发的)
B页面触发onUnload;
A页面触发onShow;
5、页面A出栈
页面A触发onUnload;
6、页面A->页面B->页面A(通过navigationTo跳转,下面是:页面B跳到页面A时触发的)
B页面触发onHide;
A页面触发onLoad、onShow、onReady;
注:此时栈为ABA三个页面,第一个页面A没有出栈。
用文字来描述的话大家可能觉得乱乱的,下面我们用表格来呈现它
注:以下中:跳到指navigateTo,重定向指redirectTo,返回指navigateBack。
不错不错,加油!