Mozilla修復Firefox執行Vue.js程式所存在的效能問題,官方提到,他們發現當程式從Vue 2更新到Vue 3時,在Firefox上執行會出現一些效能問題。Firefox已經對此調整完畢,會在9月底發布的118版本解決這項問題。

Vue.js是一個JavaScript框架,可用於建置使用者介面和單頁式應用程式。而造成Firefox執行Vue.js出現效能問題的原因,在於Vue 2與Vue 3在攔截和監聽物件屬性時的讀寫操作不同,從ECMAScript 5版本開始,JavaScript提供了getter和setter這兩個功能,讓開發者可以在讀取和設置物件屬性時自定義操作,也就是開發者在存取物件屬性時,能夠插入自己的邏輯操作。

不過到了ECMAScript 6(ES2015),這個版本的JavaScript加入了Proxy物件,供開發者可以自定義像是查詢、賦值和列舉等基本操作的行為。因為瀏覽器支援限制,Vue 2主要使用getter和setter來實作回應式系統,但到了Vue 3便開始用Proxy來處理回應式物件,因為Proxy提供更高精細度的控制與效能優勢,而getter和setter則被用於處理ref,這項新功能在較新版本的瀏覽器才提供支援。

而Vue 2與Vue 3的物件操作行為轉換,官方從Speedometer 3上發現Firefox存在效能問題。Speedometer是一款用於測試網頁瀏覽器效能的基準測試工具,可以透過模擬用戶在各種工作負載上的互動,測量網頁應用程式的回應性。而Speedometer 3則是由Apple、Google和Mozilla共同合作開發。

Mozilla提到,由於Proxy的設計非常通用,因此很難進行最佳化,在Proxy剛加入時,處理Proxy的效能並非考量重點,最初的實作主要還是考慮正確性。而在Speedometer 3測試中發現,部分Proxy被大量的使用,因而成為效能關鍵,官方決定在JIT時最佳化這些Proxy,以加速Proxy的處理效率,而這將能夠使Vue.js的回應性變得更好,同時其他相關工作負載,預期也會有效能上的提升。

熱門新聞

Advertisement