詳解微信小程序應用和頁面生命周期
什麼是生命周期
生命周期(Life Cycle)是指一個對象從創建→>運行>銷毀的整個階段,強調的是一個時間段。如:
- 張三出生,表示這個人生命周期的開始
- 張三離世,表示這個人生命周期的結束
- 中間張三的一生,就是張三的生命周期
我們可以把每個小程序運行的過程,也概括為生命周期:
- 小程序的啟動,表示生命周期的開始
- 小程序的關閉,表示生命周期的結束
- 中間小程序運行的過程,就是小程序的生命周期
生命周期的分類
在小程序中,生命周期分為兩類,分別是:
- 應用生命周期
特指小程序從啟動->運行->銷毀的過程
- 頁面生命周期
特指小程序中,每個頁面的加載->渲染->銷毀的過程
其中,頁面的生命周期范圍較小,應用程序的生命周期范圍較大:
生命周期函數
生命周期函數:是由小程序框架提供的內置函數,會伴隨著生命周期,自動按次序執行。
生命周期函數的作用:允許程序員在特定的時間點,執行某些特定的操作。例如,頁面剛加載的時候,可以在onLoad生命周期函數中初始化頁面的數據。
註意:生命周期強調的是時間段,生命周期函數強調的是時間點。
小程序中的生命周期函數分為兩類,分別是:
應用的生命周期函數
特指小程序從啟動->運行-→>銷毀期間依次調用的那些函數頁面的生命周期函數
特指小程序中,每個頁面從加載->渲染-→>銷毀期間依次調用的那些函數 小程序的應用生命周期函數
小程序的應用生命周期函數需要在app.js
中進行聲明。如:
App({ /** * 當小程序初始化完成時,會觸發 onLaunch(全局隻觸發一次) */ onLaunch: function () { console.log("小程序啟動!"); }, /** * 當小程序啟動,或從後臺進入前臺顯示,會觸發 onShow */ onShow: function (options) { console.log('小程序正在前臺運行!'); }, /** * 當小程序從前臺進入後臺,會觸發 onHide */ onHide: function () { console.log("小程序進入後臺運行!"); }, /** * 當小程序發生腳本錯誤,或者 api 調用失敗時,會觸發 onError 並帶上錯誤信息 */ onError: function (msg) { } })
- 用戶首次打開小程序,觸發 onLaunch(全局隻觸發一次)。
- 小程序初始化完成後,觸發onShow方法,監聽小程序顯示。
- 小程序從前臺進入後臺,觸發 onHide方法。
- 小程序從後臺進入前臺顯示,觸發 onShow方法。
- 小程序後臺運行一定時間,或系統資源占用過高,會被銷毀。
屬性 | 類型 | 描述 | 觸發時機 |
---|---|---|---|
onLaunch | Function | 監聽小程序初始化 | 當小程序初始化完成時,會觸發 onLaunch(全局隻觸發一次)。 |
onShow | Function | 監聽小程序顯示 | 當小程序啟動,或從後臺進入前臺顯示,會觸發 onShow |
onHide | Function | 監聽小程序隱藏 | 當小程序從前臺進入後臺,會觸發 onHide |
onError | Function | 錯誤監聽函數 | 當小程序發生腳本錯誤,或者 api 調用失敗時,會觸發 onError 並帶上錯誤信息 |
其他 | Any | 開發者可以添加任意的函數或數據到 Object 參數中,用 this 可以訪問,上面的getPics就是函數, globalName是數據,這裡面的函數和數據都是全局的。調用方式:在Pager中通過getApp()方法得到App對象並獲得全局的數據和調用全局的函數 |
前臺、後臺定義: 當用戶點擊左上角關閉,或者按瞭設備 Home 鍵離開微信小程序並沒有直接銷毀,而是進入瞭後臺;當再次進入微信或再次打開小程序,又會從後臺進入前臺。
小程序的頁面生命周期函數
小程序的頁面生命周期函數需要在頁面.js
中進行聲明。如:
Page({ /** * 頁面的初始數據 */ data: { }, /** * 生命周期函數--監聽頁面加載 */ onLoad(options) { console.log('本地生活頁面加載完畢'); }, /** * 生命周期函數--監聽頁面初次渲染完成 */ onReady() { console.log("初次渲染完畢!"); }, /** * 生命周期函數--監聽頁面顯示 */ onShow() { console.log("頁面顯示完成"); }, /** * 生命周期函數--監聽頁面隱藏 */ onHide() { console.log("頁面已被隱藏!"); }, /** * 生命周期函數--監聽頁面卸載 */ onUnload() { console.log("GG"); }, /** * 頁面相關事件處理函數--監聽用戶下拉動作 */ onPullDownRefresh() { console.log('正在刷新!'); }, /** * 頁面上拉觸底事件的處理函數 */ onReachBottom() { console.log('正在加載更多!'); }, /** * 用戶點擊右上角分享 */ onShareAppMessage() { console.log('用戶正在分享!'); } })
- 小程序註冊完成後,加載頁面,觸發onLoad方法。
- 頁面載入後觸發onShow方法,顯示頁面。
- 首次顯示頁面,會觸發onReady方法,渲染頁面元素和樣式,一個頁面隻會調用一次。
- 當小程序後臺運行或跳轉到其他頁面時,觸發onHide方法。
- 當小程序有後臺進入到前臺運行或重新進入頁面時,觸發onShow方法。
- 當使用重定向方法wx.redirectTo(OBJECT)或關閉當前頁返回上一頁wx.navigateBack(),觸發onUnload。
函數 | 說明 | 作用 |
---|---|---|
onLoad | 生命周期回調—監聽頁面加載 | 發送請求獲取數據 |
onShow | 生命周期回調—監聽頁面顯示 | 請求數據 |
onReady | 生命周期回調—監聽頁面初次渲染完成 | 獲取頁面元素(少用) |
onHide | 生命周期回調—監聽頁面隱藏 | 終止任務,如定時器或者播放音樂 |
onUnload | 生命周期回調—監聽頁面卸載 | 終止任務 |
- 小程序初始化完成後,頁面首次加載觸發onLoad,隻會觸發一次。
- 當小程序進入到後臺,先執行頁面onHide方法再執行應用onHide方法。
- 當小程序從後臺進入到前臺,先執行應用onShow方法再執行頁面onShow方法。
實例演示:
監聽事件:
到此這篇關於微信小程序應用和頁面生命周期的文章就介紹到這瞭,更多相關小程序應用和頁面生命周期內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 淺談VUE uni-app 生命周期
- 微信小程序生命周期和WXS使用實例詳解
- 微信小程序實現短信驗證碼倒計時
- 微信小程序常用功能實例匯總包括上拉刷新,下拉加載,列表數據綁定,輪播,參數傳遞
- 微信小程序實現購物車選擇規格顏色效果