uni-app實現微信端效能翻倍的妙招
相關學習推薦:微信小程式開發教學
多次論證、數月研發,我們重寫部分Vue
底層、重構uni-app
框架,實現了微信端效能翻倍及更多Vue語法支持。
背景
uni-app
在初期借鑒了mpvue
,實現了微信小程式端的快速相容,感謝美團點評團隊對於開源社區的貢獻!
隨著使用uni-app
的開發者愈來愈多,業務複雜度不斷增加,不少開發者抱怨uni-app
支援的vue語法少,某些場景效能有問題(特別是頁面存在複雜元件的情況),這些問題其實是由mpvue
的實作機制導致的,我們以複雜元件的效能問題為例簡要說明。
mpvue/wepy 等框架誕生之初,微信小程式尚不支援自訂元件,無法進行元件化開發;mpvue/wepy 為解決這個問題,創造性的將使用者編寫的Vue元件,編譯為WXML中的模板(template),這樣變相實現了組件化開發能力,提高程式碼多用性,這在當時的技術條件下是很棒的技術方案。但如此方案,也導致Vue組件中的數據會被編譯為Page中的數據,對組件進行數據更新也會基於路徑映射調用Page.setData
。特別是元件較多、資料量交大的頁面中,每個元件的局部更新會引發頁面層級的全域更新,產生極大的效能開銷。
微信後來推出的自訂元件,其實支援元件層級的局部更新,經驗證,我們發現元件層級的資料更新,相較於頁面全域更新,有大幅效能提升。
另外,mpvue
在Vue層進行的vnode
比較及資料diff
計算不徹底,也會消耗部分效能。
基於這些原因,我們開始了微信端的框架重寫工作。
新版特性
效能翻倍
新版uni-app
調整重寫了部分Vue.js
底層實現,主要包括:
- 基於小程式自訂元件實作
Vue.js
的元件化開發 -
Vue
層取消vnode
對比 - 更徹底的
diff
計算,setData()
通訊資料量更少
新框架重寫之後,我們建構瞭如下測試模型:
- 建構一個列表介面,每個列表項目為一個自訂元件
- 上拉載入觸發資料更新,每次從本地讀取靜態數據,屏蔽網路差異
- 觸發數據更新計時開始,頁面渲染完畢計時結束,求其時間差作為對比指標(耗時,單位為毫秒)
然後分別使用新、舊框架,在同一台手機(vivo nex)上進行多次測試,求其平均值,取得以下結果:
舊框架(mpvue) | 新框架 | |
---|---|---|
204ms | 129ms | |
280ms | 139ms | |
341ms | 180ms | |
653ms | 196ms |
以上是uni-app實現微信端效能翻倍的妙招的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)