微信小程序中的生命周期與生命周期函數(shù)淺析介紹
一、生命周期
概念
生命周期(Life Cycle)是指一個(gè)對(duì)象從創(chuàng)建-->運(yùn)行-->銷毀的整個(gè)階段
小程序的生命周期
- 小程序啟動(dòng),表示生命周期的開始
- 小程序關(guān)閉。表示生命周期的結(jié)束
- 中間小程序的整個(gè)運(yùn)行過程就是小程序的生命周期
分類
應(yīng)用生命周期
特指小程序從啟動(dòng)-->運(yùn)行-->銷毀的過程
頁(yè)面生命周期
特指小程序中每個(gè)頁(yè)面的加載-->渲染-->銷毀的整個(gè)過程
自定義組件生命周期
- 組件實(shí)例被創(chuàng)建
- 組件完全初始化完畢
- 組件進(jìn)入頁(yè)面節(jié)點(diǎn)樹
- 組件離開頁(yè)面節(jié)點(diǎn)樹
其中,頁(yè)面的生命周期范圍較小,應(yīng)用程序的生命周期范圍較大,如圖:

二、生命周期函數(shù)
概念
是由小程序框架提供的內(nèi)置函數(shù) ,會(huì)伴隨著生命周期,自動(dòng)按次序執(zhí)行
作用
允許程序員在特定的時(shí)間點(diǎn),執(zhí)行某些特定的操作
分類
1)小程序應(yīng)用生命周期函數(shù)
伴隨著小程序的整個(gè)生命周期:?jiǎn)?dòng)-->運(yùn)行-->銷毀
需要在app.js文件中進(jìn)行聲明,示例代碼如下:
App({
//小程序初始化完成會(huì)執(zhí)行onLaunch,全局只會(huì)觸發(fā)一次,用于頁(yè)面初始化相關(guān)工作
onLaunch:function(options){ },
//小程序啟動(dòng)時(shí)或者從后臺(tái)進(jìn)入前臺(tái)顯示時(shí)觸發(fā)onShow
onShow:function(options){ },
//小程序從前臺(tái)進(jìn)入后臺(tái)時(shí)觸發(fā)onHide
onHide:function(options){ }
})2)小程序頁(yè)面生命周期函數(shù)
伴隨著小程序頁(yè)面的整個(gè)生命周期:加載-->渲染-->銷毀
需要在頁(yè)面.js文件中進(jìn)行聲明,示例代碼如下:
Page({
onLoad:function(options){ },//監(jiān)聽頁(yè)面的加載,只會(huì)調(diào)用一次
onShow:function(options){ },//監(jiān)聽頁(yè)面顯示
onReady:function(options){ },//監(jiān)聽頁(yè)面初次渲染完成,只會(huì)調(diào)用一次
onHide:function(options){ },//監(jiān)聽頁(yè)面隱藏
onUnload:function(options){ },//監(jiān)聽頁(yè)面卸載,只會(huì)調(diào)用一次
})3)小程序自定義組件的生命周期函數(shù)
分別是created、attached、detached函數(shù)
第一,當(dāng)組件實(shí)例剛被創(chuàng)建完成,觸發(fā)created函數(shù)
- 但此時(shí)還不能調(diào)用setData函數(shù)
- 在這時(shí)間點(diǎn),只用于給組件的this添加一些自定義的屬性字段
第二,當(dāng)組件完全初始化完畢進(jìn)入頁(yè)面節(jié)點(diǎn)樹,觸發(fā)attached函數(shù)
- 此時(shí),this.data已經(jīng)被初始化完畢
- 最為關(guān)鍵的生命周期,可以進(jìn)行大多數(shù)初始化的工作,例如發(fā)送網(wǎng)絡(luò)請(qǐng)求獲取頁(yè)面的初始數(shù)據(jù)
第三,當(dāng)組件離開頁(yè)面節(jié)點(diǎn)樹后,觸發(fā)detached函數(shù)
- 退出一個(gè)頁(yè)面時(shí),會(huì)觸發(fā)頁(yè)面內(nèi)每個(gè)自定義組件的detached函數(shù)
- 此時(shí)適合做一些清理性質(zhì)的收尾工作
組件全部的生命周期函數(shù)如下:

4)定義組件的生命周期函數(shù)
在小程序組件中,組件的生命周期函數(shù)的定義有新舊兩種方式
- 第一種,直接定義在Component構(gòu)造器內(nèi)與data節(jié)點(diǎn)平級(jí)的第一級(jí)參數(shù)中
- 第二種,可以在lifetimes字段內(nèi)進(jìn)行聲明(推薦,其優(yōu)先級(jí)最高,且專門放生命周期函數(shù))
自定義組件.js文件
//定義組件生命周期函數(shù)的兩種方式
Component({
//推薦用法
lifetimes:{
attached(){ },
detached(){ },
}
//舊的定義方式,與data節(jié)點(diǎn)平級(jí)
attached(){ },
detached(){ },
})注:如果同時(shí)存在兩種新舊定義方式,那么舊的定義方式將會(huì)被覆蓋掉
三、總結(jié)
- 生命周期強(qiáng)調(diào)的是一個(gè)時(shí)間段,一個(gè)過程
- 生命周期函數(shù)強(qiáng)調(diào)的是某個(gè)時(shí)間點(diǎn),是過程中的某個(gè)節(jié)點(diǎn)
- 注意區(qū)別不同類別的生命周期函數(shù),不能搞混淆
到此這篇關(guān)于微信小程序中的生命周期與生命周期函數(shù)淺析介紹的文章就介紹到這了,更多相關(guān)小程序生命周期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序性能優(yōu)化之checkSession的使用
這篇文章主要介紹了微信小程序性能優(yōu)化之checkSession的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03
layui文件上傳控件帶更改后數(shù)據(jù)傳值的方法
今天小編就為大家分享一篇layui文件上傳控件帶更改后數(shù)據(jù)傳值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
深入學(xué)習(xí)JavaScript ES8中的函數(shù)式編程
函數(shù)式編程已經(jīng)成為現(xiàn)代JavaScript開發(fā)中的一種主要范式,它提供了一種更清晰、更模塊化、更可維護(hù)的代碼編寫方式,本文將深入探討ES8中的一些關(guān)鍵特性,并演示如何使用這些特性進(jìn)行函數(shù)式編程實(shí)踐,有需要的可以參考下2023-09-09
用javascript模仿ie的自動(dòng)完成類似自動(dòng)完成功的表單
最近在寫一個(gè)javascript框架,看見網(wǎng)上有不少自動(dòng)完成功能的表單,于是用javascript寫了一個(gè),需要的朋友可以參考下2012-12-12
在javascript中執(zhí)行任意html代碼的方法示例解讀
關(guān)于javascript的eval()函數(shù)無法執(zhí)行html代碼的問題,下面為大家介紹下一種在javascript中執(zhí)行任意html代碼的方法,感興趣的朋友不要錯(cuò)過2013-12-12
JS實(shí)現(xiàn)PC手機(jī)端和嵌入式滑動(dòng)拼圖驗(yàn)證碼三種效果
這篇文章主要介紹了JS實(shí)現(xiàn)PC手機(jī)端和嵌入式滑動(dòng)拼圖驗(yàn)證碼三種效果,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
原生JavaScript實(shí)現(xiàn)輪播圖效果
這篇文章主要為大家詳細(xì)介紹了原生JavaScript實(shí)現(xiàn)輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09

