合理使用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更新後,觸發回調