微信小程序的生命周期學(xué)習(xí)筆記-應(yīng)用篇

在我們學(xué)習(xí)微信小程序的過(guò)程當(dāng)中,我們會(huì)參考很多資料。在這些資料中,我們經(jīng)常能夠看到“生命周期”四個(gè)字,在前面的課程中也提到過(guò)。在這里做一個(gè)說(shuō)明。

創(chuàng)新互聯(lián)是一家專業(yè)提供興安盟企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、網(wǎng)站制作、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為興安盟眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

生命周期是一類函數(shù)的統(tǒng)稱,這些函數(shù)在特殊的時(shí)間點(diǎn)或遇到一些特殊的框架事件時(shí)被自動(dòng)觸發(fā)。他們的作用是負(fù)責(zé)監(jiān)聽一些操作或者狀態(tài),當(dāng)?shù)竭_(dá)了某些特殊的時(shí)間點(diǎn)或者發(fā)生了某些特殊的事件時(shí),這些函數(shù)就會(huì)觸發(fā),我們可以通過(guò)這種函數(shù)來(lái)在相應(yīng)的時(shí)間點(diǎn)或事件下,實(shí)現(xiàn)我們的小程序應(yīng)有的功能。

我們?cè)谛〕绦蛑兄饕芯咳N生命周期:應(yīng)用生命周期、頁(yè)面生命周期、組件生命周期。

應(yīng)用生命周期也稱小程序生命周期,是三種生命周期中相比之下比較易懂的一種,所以我們會(huì)重點(diǎn)介紹應(yīng)用生命周期。掌握了應(yīng)用生命周期可以為頁(yè)面生命周期和組件生命周期的掌握做好基礎(chǔ)。

應(yīng)用生命周期主要包含五個(gè)函數(shù):

我們?cè)趧?chuàng)建一個(gè)新的微信小程序項(xiàng)目時(shí),打開app.json文件,我們就可以看到一個(gè)叫做onLaunch的函數(shù),如圖。

Luanch在英文中是“啟動(dòng)”的意思。onLaunch函數(shù)在小程序啟動(dòng)并完成初始化后觸發(fā),只觸發(fā)一次。如上圖,小程序在讀取用戶的一些信息,可以在小程序的其他地方使用。

我們現(xiàn)在重新編寫onLaunch函數(shù)如下。

這段程序所做的事情就是在小程序啟動(dòng)、完成初始化后,在調(diào)試器的console中輸出一個(gè)“Launch”的字符串。

保存、編譯后,我們?cè)赾onsole中得到了“Launch”字符串,如圖。

在onLaunch函數(shù)中,我們可以像其中添加自己想要進(jìn)行的初始操作,什么叫軟文營(yíng)銷?例如獲取用戶信息、申請(qǐng)權(quán)限、獲取服務(wù)器數(shù)據(jù)等,為小程序的后續(xù)功能提供方便。

Show,即為出現(xiàn)。在屏幕上從無(wú)到有,從非當(dāng)前小程序變?yōu)楫?dāng)前小程序,即為出現(xiàn)一次。對(duì)于微信小程序的消失與重現(xiàn),無(wú)非是從別的地方切到了這個(gè)小程序當(dāng)中,把這個(gè)小程序切到了前臺(tái)。

我們?cè)趏nLaunch的同層級(jí)同樣編寫一個(gè)onShow函數(shù)如下,以測(cè)試onShow函數(shù)的執(zhí)行時(shí)間點(diǎn)。(下面測(cè)試的onHide、onError和onPageNotFound都是在這個(gè)層級(jí))

在開發(fā)者工具中,有切后臺(tái)的測(cè)試功能,即模擬各種情況之中將小程序從后臺(tái)切回前臺(tái)的狀況。我們隨意選擇幾種,每次將小程序切回前臺(tái),都會(huì)輸出一個(gè)“Show”字符串。請(qǐng)大家自己嘗試。

這里需要注意的是,小程序啟動(dòng)、進(jìn)行初始化的時(shí)間點(diǎn)也屬于出現(xiàn)一次。

將onShow函數(shù)和onLuanch函數(shù)放到一起,重新啟動(dòng)小程序,會(huì)發(fā)現(xiàn),onLuanch的執(zhí)行時(shí)間點(diǎn)早于onShow的執(zhí)行時(shí)間點(diǎn)。

Hide,即為隱藏。與onShow相反,onHide的時(shí)間點(diǎn)是微信小程序被切到后臺(tái)時(shí)開始執(zhí)行。通過(guò)onHide函數(shù),我們可以實(shí)現(xiàn)小程序被切到后臺(tái)后,計(jì)時(shí)器暫停計(jì)時(shí)、統(tǒng)計(jì)切后臺(tái)次數(shù)等自己想要的功能。

測(cè)試代碼如下:

和之前的測(cè)試代碼一樣,在執(zhí)行onHide函數(shù)時(shí)我們會(huì)在console中得到一個(gè)“Hide”字符串。

當(dāng)我們點(diǎn)擊開發(fā)者工具中切后臺(tái)的按鍵的一瞬間,就可以得到“Hide”字符串了。大家可以自行嘗試。

Error是錯(cuò)誤的意思。onError函數(shù)的執(zhí)行時(shí)間點(diǎn)是在我們的代碼運(yùn)行出錯(cuò)時(shí)執(zhí)行。

onError測(cè)試代碼如下:

onError函數(shù)與其他函數(shù)不同,我們需要傳遞一個(gè)參數(shù)err來(lái)記錄錯(cuò)誤內(nèi)容。當(dāng)然這里給參數(shù)起的名字是err,起別的名字也可以,根據(jù)自己的習(xí)慣來(lái)命名即可。

這里我們給了onError函數(shù)兩個(gè)任務(wù):當(dāng)代碼執(zhí)行出錯(cuò)時(shí),先在console中輸出“Error”字符串,然后把錯(cuò)誤信息輸出出來(lái)。

至于測(cè)試的方法有很多,例如我們可以在onLaunch或onShow中隨便加一行錯(cuò)誤代碼,如下:

這里abc就是一行錯(cuò)誤代碼。之所以會(huì)想到用onLaunch和onShow,是因?yàn)檫@兩個(gè)函數(shù)在小程序一啟動(dòng)就會(huì)執(zhí)行,方便測(cè)試。大家自己嘗試。

Page Not Found,是頁(yè)面沒(méi)有找到的意思。換言之,我們提供的頁(yè)面不存在,導(dǎo)致代碼執(zhí)行出現(xiàn)了錯(cuò)誤。但是,在應(yīng)用生命周期中的這個(gè)onPageNotFound,觸發(fā)是有一定條件的,它只有在小程序最初啟動(dòng)時(shí)找不到啟動(dòng)頁(yè)面才會(huì)觸發(fā),其他情況下不會(huì)觸發(fā)。所謂的啟動(dòng)頁(yè)面,可簡(jiǎn)單理解為小程序運(yùn)行后的第一個(gè)頁(yè)面。

我們先把測(cè)試代碼寫好:

我們的測(cè)試方法是:更改編譯模式。

我們首先在開發(fā)者工具的上方找到編譯設(shè)置,點(diǎn)擊普通編譯右側(cè)的倒三角,如圖。

選擇“添加編譯模式”,修改里面的啟動(dòng)頁(yè)面,將其中的頁(yè)面修改成一個(gè)不存在的頁(yè)面即可。大家可以自行測(cè)試。修改后編譯,就會(huì)在console中輸出“PageNotFound”的字符串了。

對(duì)于其他的找不到頁(yè)面的情況,我們也可以去測(cè)試。例如在啟動(dòng)初始化時(shí)我們想要跳轉(zhuǎn)到一個(gè)不存在的頁(yè)面,這種情況下不觸發(fā)onPageNotFound函數(shù),我們可以在onLaunch函數(shù)中做出如下改動(dòng):

我們?cè)趈s文件和json文件中用wx.navigateTo實(shí)現(xiàn)導(dǎo)航功能,其效果與我們?cè)趙xml文件中寫的

相同。這里不進(jìn)行詳細(xì)介紹。

測(cè)試后我們會(huì)發(fā)現(xiàn),這種情況下onPageNotFound不會(huì)被觸發(fā)。

與應(yīng)用生命周期相關(guān)的較主要的API有兩種:

微信開放文檔中的介紹:獲取小程序啟動(dòng)時(shí)的參數(shù),與App.onLaunch的回調(diào)參數(shù)一致。

我們先在onLaunch函數(shù)中寫如下代碼,以作測(cè)試:

這段代碼可以將wx.getLaunchOptionsSync()的返回值在console輸出。運(yùn)行后可以得到如下結(jié)果:

這些都是onLaunch函數(shù)的回調(diào)參數(shù),我們可以通過(guò)wx.getLaunchOptionsSync()來(lái)獲取這些參數(shù)。

wx.getLaunchOptionsSync()的相關(guān)值和referredInfo的結(jié)構(gòu),以及返回有效referredInfo的場(chǎng)景,詳見微信開放文檔:

https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync/1.html

微信開放文檔中的介紹:獲取本次小程序啟動(dòng)時(shí)的參數(shù)。如果當(dāng)前是冷啟動(dòng),則返回值與 App.onLaunch 的回調(diào)參數(shù)一致;如果當(dāng)前是熱啟動(dòng),則返回值與 App.onShow 一致。

冷啟動(dòng),可以理解為小程序第一次啟動(dòng),需要進(jìn)行初始化的啟動(dòng),根據(jù)之前我們的學(xué)習(xí)可知,進(jìn)行初始化后,小程序?qū)?zhí)行App.onLaunch和App.onShow兩個(gè)函數(shù)。此時(shí)的wx.getEnterOptionsSync()返回App.onLaunch的參數(shù)。

熱啟動(dòng),可以理解為已經(jīng)熱過(guò)身一般,已經(jīng)運(yùn)行過(guò),即為從后臺(tái)將小程序切到前臺(tái)。根據(jù)之前我們的學(xué)習(xí),此時(shí)小程序只執(zhí)行App.onShow。那么wx.getEnterOptionsSync()返回App.onShow的參數(shù)。

大家可以通過(guò)上面的代碼,分別對(duì)以下兩種情況進(jìn)行測(cè)試:

a.冷啟動(dòng):編譯后運(yùn)行

b.熱啟動(dòng):切后臺(tái)后返回小程序

觀察兩種情況的結(jié)果,與之前我們測(cè)試wx.getLaunchOptionsSync()所得到的結(jié)果相比對(duì),大家可以自己嘗試。

獲取參數(shù)的應(yīng)用級(jí)事件

取消監(jiān)聽的應(yīng)用級(jí)事件

此處不對(duì)以上API做詳細(xì)介紹。大家可以借鑒上文介紹的兩個(gè)API的研究方法,來(lái)對(duì)這些API進(jìn)行學(xué)習(xí)。

新書介紹

以下是本人3月份出版的新書,拜托多多關(guān)注!

本書利用Python 的標(biāo)準(zhǔn)GUI 工具包tkinter,通過(guò)可執(zhí)行的示例對(duì)23 個(gè)設(shè)計(jì)模式逐個(gè)進(jìn)行說(shuō)明。這樣一方面可以使讀者了解真實(shí)的軟件開發(fā)工作中每個(gè)設(shè)計(jì)模式的運(yùn)用場(chǎng)景和想要解決的問(wèn)題;另一方面通過(guò)對(duì)這些問(wèn)題的解決過(guò)程進(jìn)行說(shuō)明,讓讀者明白在編寫代碼時(shí)如何判斷使用設(shè)計(jì)模式的利弊,并合理運(yùn)用設(shè)計(jì)模式。

對(duì)設(shè)計(jì)模式感興趣而且希望隨學(xué)隨用的讀者通過(guò)本書可以快速跨越從理解到運(yùn)用的門檻;希望學(xué)習(xí)Python GUI 編程的讀者可以將本書中的示例作為設(shè)計(jì)和開發(fā)的參考;使用Python 語(yǔ)言進(jìn)行圖像分析、數(shù)據(jù)處理工作的讀者可以直接以本書中的示例為基礎(chǔ),迅速構(gòu)建自己的系統(tǒng)架構(gòu)。

覺(jué)得本文有幫助?請(qǐng)分享給更多人。

關(guān)注微信公眾號(hào)【面向?qū)ο笏伎肌枯p松學(xué)習(xí)每一天!

面向?qū)ο箝_發(fā),面向?qū)ο笏伎迹?/p>

網(wǎng)頁(yè)題目:微信小程序的生命周期學(xué)習(xí)筆記-應(yīng)用篇
URL網(wǎng)址:http://muchs.cn/article10/sdisdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)虛擬主機(jī)、網(wǎng)站內(nèi)鏈、網(wǎng)站排名企業(yè)建站、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化