如何優化uniapp專案?以下這篇文章跟大家分享一些uniapp專案優化方式及建議,希望對大家有幫助。
場景:
例如專案裡包含類似論壇頁面:點選一個點讚圖標,讚數要立即1,會引發頁面層級所有的資料從js層向視圖層的同步,造成整個頁面的資料更新,造成點擊延遲卡頓
##優化方案:
對於複雜頁面,更新某個區域的資料時,需要把這個區域做成元件,這樣更新資料時就只更新這個元件註:app- nvue和h5不存在此問題;造成差異的原因是小程式目前只提供了元件差量更新的機制,不能自動計算所有頁面差量
場景:
頁面中若大量使用大圖資源,會造成頁面切換的卡頓,導致系統記憶體升高,甚至白屏崩潰;對大體積的二進位進行base64 ,也非常耗費資源#優化方案:
圖片請壓縮後使用,避免大圖,必要時可以考慮雪碧圖或svg,簡單程式碼能實現的就不要圖片功能描述:
此功能只對微信小程式、 App、百度小程式、位元組跳動小程式有效,預設開啟頁面初始化時,邏輯層一次向視圖層傳遞很大的數據,使視圖層一次渲染大量節點,可能造成通訊變慢、頁面切換卡頓
#優化方案:以局部更新頁面的方式渲染頁面;如:服務端返回100條數據,可進行分批加載,一次加載50條, 500ms 後進行下一次加載
8.避免視圖層與邏輯層頻繁進行通訊等待n秒後執行某函數,若等待期間再次觸發,則等待時間重新初始化
#節流:觸發事件n秒內只執行一次,n秒未過,再次觸發無效
11.優化頁面切換動畫頁面初始化時存在大量圖片或原生元件渲染和大量資料通訊,會發生新頁面渲染和窗體進入動畫搶資源,造成頁面切換卡頓、掉幀 優化方案: 建議延時100ms~300ms 渲染圖片或複雜原生元件,分批進行資料通訊,以減少一次渲染的節點數量 #App 端動畫效果可以自訂; popin/popout 的雙窗體連動擠壓動畫效果對資源的消耗更大,如果動畫期間頁面裡在執行耗時的js,可能會造成動畫掉幀;此時可以使用消耗資源較小的動畫效果,例如slide-in-right / slide-out-right #App-nvue 和H5 ,也支援頁面預載,uni.preloadPage,可以提供更好的使用體驗 場景: 進入新頁面時背景閃白,如果頁面背景是深色,在vue頁面中可能會發生新窗體剛開始動畫時是灰白色背景,動畫結束時才變為深色背景,造成快閃畫面 最佳化方案: #將樣式寫在 App.vue 裡,加速頁面樣式渲染速度; App.vue 裡面的樣式是全域樣式,每次開啟頁面都會優先載入 App.vue 裡面的樣式,然後載入普通vue 頁面的樣式 app端還可以在pages .json 的頁面的style 裡單獨配置頁面原生背景色,例如在globalStyle->style->app-plus->background 下配置全域背景色 #nvue頁面不存在此問題,也可以變更為nvue頁面 App端使用v3編譯器,首頁為nvue頁面時,並設定為 #App設定為純nvue專案(manifest裡設定app-plus下的renderer:" native"),這種專案的啟動速度更快,2秒鐘即可完成啟動;因為它整個應用都使用原生渲染,不載入基於webview的那套框架 uni-app 的App端,Android 基礎引擎約9M ,App 也提供了擴充模組,例如地圖、藍牙等等,打包時如不需要這些模組,可以裁剪掉,以縮小發行包;體積在manifest.json-App 模組權限裡可以選擇 App端支援如果選擇純nvue專案(manifest裡設定app-plus下的renderer:"native"),包體積可以進一步減少2M左右 App端在HBuilderX 2.7 後,App 端下掉了非v3的編譯模式,套件體積下降了3M
#12.優化背景色閃白
#"style": { "app-plus": { "background":"#000000" } }
#13.最佳化啟動速度
App端的splash 關閉有白屏檢測機制,如果首頁一直白屏或首頁本身就是一個空的中轉頁面,可能會造成splash 10秒才關閉
manifest配置
以上是如何優化uniapp專案?分享幾種優化方案及建議的詳細內容。更多資訊請關注PHP中文網其他相關文章!