微信小程序的性能優(yōu)化

先要進行性能優(yōu)化首先需要了解小程序的實現(xiàn)原理:
參考文檔:

啟動小程序的步驟:

  • 從CDN服務(wù)器上下載小程序代碼包(代碼包不是小程序的源代碼,而是編譯、壓縮打包之后的代碼包)
  • 加載此代碼包
  • 初始化首屏

由此,我們從加載、渲染兩個方面來進行優(yōu)化

1. 加載
1.1 進行分包處理
  • 微信小程序要求每個包大小不能超過2M;
1.2 控制包的大小
  • 減少資源包中的圖片等資源的數(shù)量和大?。╥con可以放在本地,圖片盡量放在服務(wù)器上,然后http引入);
  • 提取公共組件、方法、樣式,減少冗余代碼;
  • 及時清理無用代碼和資源文件;
  • 第三方插件包按需引入;
2. 渲染
2.1 對于數(shù)據(jù)的請求(首屏體驗(預(yù)請求,利用緩存))
  • 盡量提早請求數(shù)據(jù),不要等頁面ready后再異步請求數(shù)據(jù)


    數(shù)據(jù)的請求時機
  • 盡量減少不必要的https請求,可使用 getStorageSync() 及 setStorageSync() 方法將數(shù)據(jù)存儲在本地
  • 可以在前置頁面將一些有用的字段帶到當前頁,進行首次渲染(列表頁的某些數(shù)據(jù)--> 詳情頁),沒有數(shù)據(jù)的模塊可以進行骨架屏的占位
2.2 規(guī)范setData操作
image.png
  • 減少setData次數(shù)
    a) 僅傳輸視圖層使用到的數(shù)據(jù),JS環(huán)境用到的數(shù)據(jù)存放到data對象外;
    b) 合理利用局部更新。setData支持使用數(shù)據(jù)路徑的方式對對象的局部字段進行更新。
this.setData({
       [`dotList[${tarIndex}].dotShow`]: true,
       [`dotList[${tarIndex}].dotNum`]: +res.data
});
  • 降低setData執(zhí)行頻率:
    c) 將多個setData調(diào)用合并執(zhí)行,減少線程間通信頻次;
    d) 當需要在頻繁觸發(fā)的用戶事件(如PageScroll、Resize事件)中調(diào)用setData,合理的利用函數(shù)防抖(debounce)和函數(shù)節(jié)流(throttle)可以減少setData執(zhí)行次數(shù)。
2.3 使用自定義組件
  • 對于一些獨立的模塊我們盡可能抽離出來,因為自定義組件的更新并不會影響頁面上其他元素的更新
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容