詳解微信小程序應(yīng)用和頁面生命周期
什么是生命周期
生命周期(Life Cycle)是指一個對象從創(chuàng)建→>運行>銷毀的整個階段,強調(diào)的是一個時間段。如:
- 張三出生,表示這個人生命周期的開始
- 張三離世,表示這個人生命周期的結(jié)束
- 中間張三的一生,就是張三的生命周期
我們可以把每個小程序運行的過程,也概括為生命周期:
- 小程序的啟動,表示生命周期的開始
- 小程序的關(guān)閉,表示生命周期的結(jié)束
- 中間小程序運行的過程,就是小程序的生命周期
生命周期的分類
在小程序中,生命周期分為兩類,分別是:
- 應(yīng)用生命周期
特指小程序從啟動->運行->銷毀的過程
- 頁面生命周期
特指小程序中,每個頁面的加載->渲染->銷毀的過程
其中,頁面的生命周期范圍較小,應(yīng)用程序的生命周期范圍較大:

生命周期函數(shù)
生命周期函數(shù):是由小程序框架提供的內(nèi)置函數(shù),會伴隨著生命周期,自動按次序執(zhí)行。
生命周期函數(shù)的作用:允許程序員在特定的時間點,執(zhí)行某些特定的操作。例如,頁面剛加載的時候,可以在onLoad生命周期函數(shù)中初始化頁面的數(shù)據(jù)。
注意:生命周期強調(diào)的是時間段,生命周期函數(shù)強調(diào)的是時間點。
小程序中的生命周期函數(shù)分為兩類,分別是:
應(yīng)用的生命周期函數(shù)
特指小程序從啟動->運行-→>銷毀期間依次調(diào)用的那些函數(shù)頁面的生命周期函數(shù)
特指小程序中,每個頁面從加載->渲染-→>銷毀期間依次調(diào)用的那些函數(shù) 小程序的應(yīng)用生命周期函數(shù)
小程序的應(yīng)用生命周期函數(shù)需要在app.js 中進行聲明。如:
App({
/**
* 當小程序初始化完成時,會觸發(fā) onLaunch(全局只觸發(fā)一次)
*/
onLaunch: function () {
console.log("小程序啟動!");
},
/**
* 當小程序啟動,或從后臺進入前臺顯示,會觸發(fā) onShow
*/
onShow: function (options) {
console.log('小程序正在前臺運行!');
},
/**
* 當小程序從前臺進入后臺,會觸發(fā) onHide
*/
onHide: function () {
console.log("小程序進入后臺運行!");
},
/**
* 當小程序發(fā)生腳本錯誤,或者 api 調(diào)用失敗時,會觸發(fā) onError 并帶上錯誤信息
*/
onError: function (msg) {
}
})
- 用戶首次打開小程序,觸發(fā) onLaunch(全局只觸發(fā)一次)。
- 小程序初始化完成后,觸發(fā)onShow方法,監(jiān)聽小程序顯示。
- 小程序從前臺進入后臺,觸發(fā) onHide方法。
- 小程序從后臺進入前臺顯示,觸發(fā) onShow方法。
- 小程序后臺運行一定時間,或系統(tǒng)資源占用過高,會被銷毀。
| 屬性 | 類型 | 描述 | 觸發(fā)時機 |
|---|---|---|---|
| onLaunch | Function | 監(jiān)聽小程序初始化 | 當小程序初始化完成時,會觸發(fā) onLaunch(全局只觸發(fā)一次)。 |
| onShow | Function | 監(jiān)聽小程序顯示 | 當小程序啟動,或從后臺進入前臺顯示,會觸發(fā) onShow |
| onHide | Function | 監(jiān)聽小程序隱藏 | 當小程序從前臺進入后臺,會觸發(fā) onHide |
| onError | Function | 錯誤監(jiān)聽函數(shù) | 當小程序發(fā)生腳本錯誤,或者 api 調(diào)用失敗時,會觸發(fā) onError 并帶上錯誤信息 |
| 其他 | Any | 開發(fā)者可以添加任意的函數(shù)或數(shù)據(jù)到 Object 參數(shù)中,用 this 可以訪問,上面的getPics就是函數(shù), globalName是數(shù)據(jù),這里面的函數(shù)和數(shù)據(jù)都是全局的。調(diào)用方式:在Pager中通過getApp()方法得到App對象并獲得全局的數(shù)據(jù)和調(diào)用全局的函數(shù) |
前臺、后臺定義: 當用戶點擊左上角關(guān)閉,或者按了設(shè)備 Home 鍵離開微信小程序并沒有直接銷毀,而是進入了后臺;當再次進入微信或再次打開小程序,又會從后臺進入前臺。
小程序的頁面生命周期函數(shù)
小程序的頁面生命周期函數(shù)需要在頁面.js 中進行聲明。如:
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面加載
*/
onLoad(options) {
console.log('本地生活頁面加載完畢');
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成
*/
onReady() {
console.log("初次渲染完畢!");
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面顯示
*/
onShow() {
console.log("頁面顯示完成");
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面隱藏
*/
onHide() {
console.log("頁面已被隱藏!");
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面卸載
*/
onUnload() {
console.log("GG");
},
/**
* 頁面相關(guān)事件處理函數(shù)--監(jiān)聽用戶下拉動作
*/
onPullDownRefresh() {
console.log('正在刷新!');
},
/**
* 頁面上拉觸底事件的處理函數(shù)
*/
onReachBottom() {
console.log('正在加載更多!');
},
/**
* 用戶點擊右上角分享
*/
onShareAppMessage() {
console.log('用戶正在分享!');
}
})
- 小程序注冊完成后,加載頁面,觸發(fā)onLoad方法。
- 頁面載入后觸發(fā)onShow方法,顯示頁面。
- 首次顯示頁面,會觸發(fā)onReady方法,渲染頁面元素和樣式,一個頁面只會調(diào)用一次。
- 當小程序后臺運行或跳轉(zhuǎn)到其他頁面時,觸發(fā)onHide方法。
- 當小程序有后臺進入到前臺運行或重新進入頁面時,觸發(fā)onShow方法。
- 當使用重定向方法wx.redirectTo(OBJECT)或關(guān)閉當前頁返回上一頁wx.navigateBack(),觸發(fā)onUnload。
| 函數(shù) | 說明 | 作用 |
|---|---|---|
| onLoad | 生命周期回調(diào)—監(jiān)聽頁面加載 | 發(fā)送請求獲取數(shù)據(jù) |
| onShow | 生命周期回調(diào)—監(jiān)聽頁面顯示 | 請求數(shù)據(jù) |
| onReady | 生命周期回調(diào)—監(jiān)聽頁面初次渲染完成 | 獲取頁面元素(少用) |
| onHide | 生命周期回調(diào)—監(jiān)聽頁面隱藏 | 終止任務(wù),如定時器或者播放音樂 |
| onUnload | 生命周期回調(diào)—監(jiān)聽頁面卸載 | 終止任務(wù) |

- 小程序初始化完成后,頁面首次加載觸發(fā)onLoad,只會觸發(fā)一次。
- 當小程序進入到后臺,先執(zhí)行頁面onHide方法再執(zhí)行應(yīng)用onHide方法。
- 當小程序從后臺進入到前臺,先執(zhí)行應(yīng)用onShow方法再執(zhí)行頁面onShow方法。
實例演示:

監(jiān)聽事件:

到此這篇關(guān)于微信小程序應(yīng)用和頁面生命周期的文章就介紹到這了,更多相關(guān)小程序應(yīng)用和頁面生命周期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
innerHTML動態(tài)添加html代碼和腳本兼容多個瀏覽器
innerHTML動態(tài)添加html代碼和腳本,給某個元素的innerHTML賦值,并使得值中的js代碼有效且兼容多個瀏覽器,很棒的一個方法2014-10-10
JS,Jquery獲取select,dropdownlist,checkbox下拉列表框的值(示例代碼)
本篇文章主要是對JS,Jquery獲取select,dropdownlist,checkbox下拉列表框的值(示例代碼)進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01
JS實現(xiàn)根據(jù)指定值刪除數(shù)組中的元素操作示例
這篇文章主要介紹了JS實現(xiàn)根據(jù)指定值刪除數(shù)組中的元素操作,結(jié)合實例形式總結(jié)分析了JavaScript針對數(shù)組元素刪除操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-08-08

