要優化 uni-app 應用的加載速度,可以從以下幾個方面入手:
1. 優化包體積:
- 發行到小程序時,自帶引擎只有幾十K,主要是一個定制過的 Vue.js 核心庫。如果使用了 ES6 轉 ES5、CSS 對齊的功能,可能會增大代碼體積,可以配置這些編譯功能是否開啟。
- 對于 H5 端,uni-app 提供了搖樹優化機制,未搖樹優化前的 uni-app 整體包體積約 500k,服務器部署 gzip 后 162k。開啟搖樹優化需在 `manifest` 配置。
- App 端,如果選擇純 nvue 項目(在 `manifest` 里設置 `app-plus` 下的 `renderer:"native"`),包體積可以進一步減少約 2M。
2. 減少頁面級渲染:
- 減少頁面級渲染可以提升性能。
3. 使用 CSS 解決問題:
- 能用 CSS 解決的,不要用 JS。
4. 壓縮圖片:
- 減少 M 級圖片,在保證分辨率的同時,盡量壓縮圖片。
5. 減少 HTTP 請求:
- 通過合并 CSS 和 JavaScript 文件,減少 HTTP 請求次數也是優化加載速度的有效手段。
6. 使用 nvue 代替 vue:
- 在 App 端,nvue 頁面基于原生渲染引擎,提高了頁面流暢性。若對頁面性能要求較高可以使用此方式開發。
7. 優化啟動速度:
- App 端的 splash 關閉有白屏檢測機制,如果首頁一直白屏或首頁本身就是一個空的中轉頁面,可能會造成 splash 10秒才關閉。可以通過優化首頁邏輯來解決。
- App 端使用自定義組件模式時啟動速度更快,首頁為 nvue 頁面時啟動速度更快。
- 設置為純 nvue 項目(在 `manifest` 里設置 `app-plus` 下的 `renderer:"native"`),這種項目的啟動速度更快,2秒即可完成啟動。
8. 代碼拆分和懶加載:
- 根據頁面和功能的使用情況,將代碼拆分為多個模塊,并按需引入,以減小初始加載體積。
- 圖片懶加載通過 `image` 組件的 `lazy-load` 屬性實現,可以顯著減少首屏的加載時間。
- 組件懶加載可以避免一次性加載所有組件,而是在需要時動態加載組件。
9. 使用緩存機制:
- 通過設置緩存策略,減少用戶每次訪問時的加載時間。常見的緩存策略包括靜態資源緩存和 Service Worker 緩存(適用于 H5)。
10. 性能分析工具:
- 使用開發者工具提供的性能分析工具,例如性能面板、網絡面板等,分析應用性能瓶頸。
通過上述方法,可以有效提升 uni-app 應用的加載速度和性能。