国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 熱點 > 微信 > 正文

微信小程序如何實現全局重新加載

2024-07-22 01:18:15
字體:
來源:轉載
供稿:網友

背景:

隨著業務的增加,我們服務器需要計算大量的用戶數據,導致用戶跟客服反應頁面不能正常展示。反饋給開發后,我們一看,是服務器異常的錯誤。So,產品想看下我們到底有多少用戶頁面不能正常展示?

方案:

    后端人員直接在阿里云后臺去查哪些接口異常 前端做一個服務器報錯頁,這樣產品在小程序后臺能看到這個頁面的PV,UV

技術方案

因為業務龐大,所以我們不可能區在每個頁面加上重新加載的邏輯。所以初步考慮使用全局重新加載。

需要解決的問題都有哪些?

    首先我們要有網絡請求失敗的全局控制權(要不然就需要在每個頁面處理失敗的情況) 需要定義好網絡失敗后是如何跳轉到重載頁(R)的(用wx.redirectTo,wx.reLaunch還是其他) 點擊錯誤頁的“重新加載”,如何返回或跳轉到出錯頁(E)(用wx.redirectTo,wx.reLaunch還是其他) 跳轉到出錯頁后,如何重新加載數據(把所有請求都放在Page.onShow()里面?) 那如果從出錯頁的上個界面(P)傳到出錯頁(E)options,那重載頁(R)又將如何處理? 點擊重新加載跟返回,我們希望效果效果一樣,又該如何操作?

實踐的方式如下

第一個問題: 比較好解決,我們基于wx.request已經封裝了為fetch(如果還在用wx.request的項目可以考慮封裝下,好處多多)。基于fetch我們可以用res.statusCode來判斷服務器是否出錯。

第二個問題: 暫且先不說具體的跳轉方式是怎樣的,就跳轉的url這個怎么定義也需要我們來討論下。為什么這么說,因為我們的架構涉及到了分包。分包加載意味著我們的代碼不僅僅是在pages下面,還放在了package下。

基于此,我們在跳轉的時候,url能直接寫成'../serverError/serverError'嗎?在主包下面可以正常跳轉,但是在分包下,路徑是'package/serverError/serverError',這樣跳肯定不行。url應該是根目錄下的路徑,所以'/pages/serverError/serverError'。

路徑確認后,我們可以跳轉了。如果是wx.redirectTo(關閉當前頁面,跳轉到應用內的某個頁面),想象下關閉E跳轉到R,點擊重新加載,再關閉R跳轉到E,這么跳轉路徑復雜,用戶體驗不好,并且options的參數需要逐級傳遞。wx.reLaunch類似。我們用所以我們選擇wx.navigateTo。

第三個問題: 綜合問題二的解釋,跳回到E,我們用wx.navigateBack。

第四個問題: 如果從R用wx.navigateBack回到E的話,肯定會觸發E.onShow()方法。但是有些請求我們除了寫在Page.onShow()里,還有些是寫在Page.onLoad()里的,所以我們必須想辦法調起E.onLoad()。

大家對于getCurrentPages()這個方法肯定不陌生,官方定義是來獲取當前頁面棧,我們一般用它來獲取當前頁面路徑。其實在這個過程中,我們是能拿到當前頁面的實例的,并且實例里面有route(頁面路徑)options(頁面傳遞參數)data(頁面初始參數)以及各種function()等等。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北碚区| 彰化县| 嘉黎县| 闸北区| 乌兰县| 南京市| 三门峡市| 繁峙县| 喀什市| 文安县| 阿勒泰市| 紫阳县| 平南县| 防城港市| 射洪县| 莱州市| 嘉义县| 治多县| 万安县| 绥芬河市| 长春市| 修武县| 北宁市| 吐鲁番市| 仁化县| 田阳县| 垦利县| 雅安市| 峨眉山市| 温州市| 左贡县| 平乡县| 英吉沙县| 玉林市| 密云县| 拜泉县| 开封县| 台州市| 鄂州市| 镇原县| 乐安县|