Vue性能「十九」-- Vue常見優化方式 ***

合理使用v-show和 v-if
合理使用computed(緩存)
v-for中加key,避免和v-if同時使用
自定義事件和DOM事件及時銷燬(否則會導致內存泄露)
合理使用異步組件(import)
合理使用緩存組件(keep-alive)
合理使用異步渲染($nextTick)
data層級不要太深(導致深度監聽時遞歸的次數比較多)
使用vue-loader在開發環境做模板編譯(預編譯)
使用SSR(服務端渲染)

1.合理使用v-show和 v-if

v-show和 v-if的區別:

  • v-show通過css display屬性控制,適用頻繁切換
  • v-if通過vue本身的機制控制,適用不會頻繁切換
    根據不同場景合理使用

2.合理使用computed(緩存)

計算屬性 computed:

  • 支持緩存,只有依賴數據發生改變,纔會重新進行計算;
  • 不支持異步,當computed內有異步操作時無效,無法監聽數據的變化;
  • computed 屬性值會默認走緩存,計算屬性是基於它們的響應式依賴進行緩存的,也就是基於data中聲明過或者父組件傳遞的props中的數據通過計算得到的值
  • 如果一個屬性是由其他屬性計算而來的,這個屬性依賴其他屬性,是多對一或者一對一,一般用computed
  • 如果computed屬性屬性值是函數,那麼默認會走get方法;函數的返回值就是屬性的屬性值;在computed中的,屬性都有一個get和一個set方法,當數據變化時,調用set方法。

詳情見文章 : Vue原理「十八」-- computed和watch的區別及原理 ***

3.v-for中加key,避免和v-if同時使用

diff算法中通過tag和key判斷是不是sameNode
減少渲染次數,提升渲染性能

4.自定義事件和DOM事件及時銷燬(否則會導致內存泄露)

beforeDestory鉤子函數中:
解綁自定義事件 event.$off,否則容易造成內存泄露
清楚定時器
解綁自定義的DOM事件,window scroll 等

vm.$destroy() 完全銷燬一個實例,清理與其他實例之間的鏈接,解綁他的全部指令與事件監聽器,避免導致內存泄露

5.合理使用異步組件(import)

異步組件就是定義的時候什麼都不做,只在組件需要渲染(組件第一次顯示)的時候進行加載渲染並緩存,緩存是以備下次訪問。

Vue實現按需加載:

import() 函數,按需加載,異步加載大組件

詳情見文章 : Vue高級特性「七」--動態組件\異步組件***

6.合理使用緩存組件(keep-alive)

keep-alive 緩存組件,不需要重複渲染,(被包裹在keep-alive中的組件的狀態將會被保留)
應用場景:
頻繁切換,不需要重複渲染(tab切換),如果標籤簡單可以使用 v-show

詳情見文章 : Vue高級特性「八」--keep-alive 緩存組件 ***

7.合理使用異步渲染($nextTick)

異步渲染(以及合併data修改),以提高渲染性能
$nextTick在DOM更新後,觸發回調

8.data層級 不要太深(導致深度監聽時遞歸的次數比較多)

9.使用vue-loader在開發環境做模板編譯(預編譯)

10.使用SSR(服務端渲染)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章