亚洲综合在线一区二区三区-日韩超碰人人爽人人做人人添-麻豆国产精品久久人妻-无码人妻丰满熟妇啪啪-天堂精品一区二区三区-99久久综合狠狠综合久久aⅴ

×

微信小程序的生命周期學習筆記-應用篇

分類:互聯網熱點 編輯:互聯網觀察 瀏覽量:437
2020-07-20 13:33:06

在我們學習微信小程序的過程當中,我們會參考很多資料。在這些資料中,我們經常能夠看到“生命周期”四個字,在前面的課程中也提到過。在這里做一個說明。

生命周期是一類函數的統稱,這些函數在特殊的時間點或遇到一些特殊的框架事件時被自動觸發。他們的作用是負責監聽一些操作或者狀態,當到達了某些特殊的時間點或者發生了某些特殊的事件時,這些函數就會觸發,我們可以通過這種函數來在相應的時間點或事件下,實現我們的小程序應有的功能。

我們在小程序中主要研究三種生命周期:應用生命周期、頁面生命周期、組件生命周期。

應用生命周期也稱小程序生命周期,是三種生命周期中相比之下比較易懂的一種,所以我們會重點介紹應用生命周期。掌握了應用生命周期可以為頁面生命周期和組件生命周期的掌握做好基礎。

應用生命周期主要包含五個函數:

我們在創建一個新的微信小程序項目時,打開app.json文件,我們就可以看到一個叫做onLaunch的函數,如圖。

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

我們現在重新編寫onLaunch函數如下。

這段程序所做的事情就是在小程序啟動、完成初始化后,在調試器的console中輸出一個“Launch”的字符串。

保存、編譯后,我們在console中得到了“Launch”字符串,如圖。

在onLaunch函數中,我們可以像其中添加自己想要進行的初始操作,例如獲取用戶信息、申請權限、獲取服務器數據等,為小程序的后續功能提供方便。

Show,即為出現。在屏幕上從無到有,從非當前小程序變為當前小程序,即為出現一次。對于微信小程序的消失與重現,無非是從別的地方切到了這個小程序當中,把這個小程序切到了前臺。

我們在onLaunch的同層級同樣編寫一個onShow函數如下,以測試onShow函數的執行時間點。(下面測試的onHide、onError和onPageNotFound都是在這個層級)

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

這里需要注意的是,小程序啟動、進行初始化的時間點也屬于出現一次。

將onShow函數和onLuanch函數放到一起,重新啟動小程序,會發現,onLuanch的執行時間點早于onShow的執行時間點。

Hide,即為隱藏。與onShow相反,onHide的時間點是微信小程序被切到后臺時開始執行。通過onHide函數,我們可以實現小程序被切到后臺后,計時器暫停計時、統計切后臺次數等自己想要的功能。

測試代碼如下:

和之前的測試代碼一樣,在執行onHide函數時我們會在console中得到一個“Hide”字符串。

當我們點擊開發者工具中切后臺的按鍵的一瞬間,就可以得到“Hide”字符串了。大家可以自行嘗試。

Error是錯誤的意思。onError函數的執行時間點是在我們的代碼運行出錯時執行。

onError測試代碼如下:

onError函數與其他函數不同,我們需要傳遞一個參數err來記錄錯誤內容。當然這里給參數起的名字是err,起別的名字也可以,根據自己的習慣來命名即可。

這里我們給了onError函數兩個任務:當代碼執行出錯時,先在console中輸出“Error”字符串,然后把錯誤信息輸出出來。

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

這里abc就是一行錯誤代碼。之所以會想到用onLaunch和onShow,是因為這兩個函數在小程序一啟動就會執行,方便測試。大家自己嘗試。

Page Not Found,是頁面沒有找到的意思。換言之,我們提供的頁面不存在,導致代碼執行出現了錯誤。但是,在應用生命周期中的這個onPageNotFound,觸發是有一定條件的,它只有在小程序最初啟動時找不到啟動頁面才會觸發,其他情況下不會觸發。所謂的啟動頁面,可簡單理解為小程序運行后的第一個頁面。

我們先把測試代碼寫好:

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

我們首先在開發者工具的上方找到編譯設置,點擊普通編譯右側的倒三角,如圖。

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

對于其他的找不到頁面的情況,我們也可以去測試。例如在啟動初始化時我們想要跳轉到一個不存在的頁面,這種情況下不觸發onPageNotFound函數,我們可以在onLaunch函數中做出如下改動:

我們在js文件和json文件中用wx.navigateTo實現導航功能,其效果與我們在wxml文件中寫的

相同。這里不進行詳細介紹。

測試后我們會發現,這種情況下onPageNotFound不會被觸發。

與應用生命周期相關的較主要的API有兩種:

微信開放文檔中的介紹:獲取小程序啟動時的參數,與App.onLaunch的回調參數一致。

我們先在onLaunch函數中寫如下代碼,以作測試:

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

這些都是onLaunch函數的回調參數,我們可以通過wx.getLaunchOptionsSync()來獲取這些參數。

wx.getLaunchOptionsSync()的相關值和referredInfo的結構,以及返回有效referredInfo的場景,詳見微信開放文檔:

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

微信開放文檔中的介紹:獲取本次小程序啟動時的參數。如果當前是冷啟動,則返回值與 App.onLaunch 的回調參數一致;如果當前是熱啟動,則返回值與 App.onShow 一致。

冷啟動,可以理解為小程序第一次啟動,需要進行初始化的啟動,根據之前我們的學習可知,進行初始化后,小程序將執行App.onLaunch和App.onShow兩個函數。此時的wx.getEnterOptionsSync()返回App.onLaunch的參數。

熱啟動,可以理解為已經熱過身一般,已經運行過,即為從后臺將小程序切到前臺。根據之前我們的學習,此時小程序只執行App.onShow。那么wx.getEnterOptionsSync()返回App.onShow的參數。

大家可以通過上面的代碼,分別對以下兩種情況進行測試:

a.冷啟動:編譯后運行

b.熱啟動:切后臺后返回小程序

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

獲取參數的應用級事件

取消監聽的應用級事件

此處不對以上API做詳細介紹。大家可以借鑒上文介紹的兩個API的研究方法,來對這些API進行學習。

新書介紹

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

本書利用Python 的標準GUI 工具包tkinter,通過可執行的示例對23 個設計模式逐個進行說明。這樣一方面可以使讀者了解真實的軟件開發工作中每個設計模式的運用場景和想要解決的問題;另一方面通過對這些問題的解決過程進行說明,讓讀者明白在編寫代碼時如何判斷使用設計模式的利弊,并合理運用設計模式。

對設計模式感興趣而且希望隨學隨用的讀者通過本書可以快速跨越從理解到運用的門檻;希望學習Python GUI 編程的讀者可以將本書中的示例作為設計和開發的參考;使用Python 語言進行圖像分析、數據處理工作的讀者可以直接以本書中的示例為基礎,迅速構建自己的系統架構

覺得本文有幫助?請分享給更多人。

關注微信公眾號【面向對象思考】輕松學習每一天!

面向對象開發,面向對象思考!


聲明:免責聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,請發

送郵件至:operations@xinnet.com進行舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。本站原創內容未經允許不得轉載,或轉載時

需注明出處:新網idc知識百科

免費咨詢獲取折扣

Loading
主站蜘蛛池模板: 人妻少妇中文字幕久久| 国产免国产免费| av狠狠色超碰丁香婷婷综合久久| 国产精品高清一区二区不卡片| 国产成人在线观看一区二区 | 粗壮挺进邻居人妻无码| 人妻无码一区二区三区免费| 亚洲精品午夜一区人人爽| 香蕉午夜福利院| 国产一区二区三区久久精品| 激情综合色综合啪啪五月丁香 | 亚洲国产精品第一区二区| 色偷偷尼玛图亚洲综合| 欧美激情一区二区成人| 极品无码国模国产在线观看| 国产精品玖玖玖在线| 18禁无遮拦无码国产在线播放| 三个男吃我奶头一边一个视频| 80s国产成年女人毛片| 猫咪av成人永久网站在线观看| 性一交一乱一伦一| 成熟丰满熟妇xxxxx丰满| 久久精品国产一区二区三| 老汉色老汉首页a亚洲| 妺妺窝人体色777777| 大色综合色综合网站| 亚洲欧美日韩人成在线播放| 亚洲一区欧美精品| 无码中文字幕免费一区二区三区 | 亚洲成a人v欧美综合天堂下载| 日韩福利一区三区| 精品欧美成人一区二区不卡在线| 国产成人精品日本亚洲网站| 久久www成人_看片免费不卡| 日韩av无码一区二区三区不卡毛片 | 蜜桃网站入口在线进入| 亚洲精品天堂成人片av在线播放| 久久高清内射无套| 国产精品天干天干综合网| 亚洲日韩欧美在线无卡| 亚洲精品国偷自产在线99人热 |