1. 程式人生 > 其它 >Vue的keep-alive、虛擬DOM的作用、diff演算法

Vue的keep-alive、虛擬DOM的作用、diff演算法

一、keep-alive

作用:keep-alive標籤是vue的內建標籤,可在元件切換過程中將狀態保留在記憶體中,防止DOM重複渲染。

標籤屬性:include:符合條件的元件會被快取,exclude:符合條件的元件不會被快取。

生命週期鉤子:activated進入頁面時獲取最新資料,deactivated離開頁面時呼叫。

使用方法:

1.在標籤的include屬性中寫入需要快取的元件名或者使用v-bind匹配相應的正則表示式,exclude同理。

2.結合vue-router,在router中使用meta配置項,可在router-view標籤中使用v-if或v-show進行展示,亦可路由守衛中搭配to和form.meata.屬性值使用。

二、vue虛擬DOM

作用:1.提供與真實DOM節點相對應的虛擬節點vnode;2.將新的虛擬節點與舊的虛擬節點oldvnode進行比對,然後更新檢視。

例子:比如ul的li中僅改變一個,不用覆蓋全部ul,而只是改變該li。

優點:具備跨平臺的優勢,避免了不必要的DOM操作,加快了初始化渲染的速度,降低了記憶體的消耗。

三、diff演算法

作用:在將新舊虛擬節點進行比對後,需要更新改動的那部分DOM,diff演算法就是為了實現這一過程,diff只會在同層級之間進行比較,不會跨層級比較。

實現過程:當資料傳送改變時,set方法會通知訂閱器Dep呼叫notify通知所有的訂閱者watcher,訂閱者就會呼叫patch給真實的DOM打補丁,更新相應的檢視。