Vue虛擬DOM的閃爍問題源于其對數據與視圖的同步處理方式,因為Vue在更新數據時會先將視圖全部清空再重新渲染,此過程中造成了很短的DOM空白期,讓用戶看到了一下“閃爍”的現象。
通常我們會遇到,第一次加載頁面、或當數據需要更新時,Vue都會重新渲染DOM。在數據變更時,Vue先計算得到新的虛擬節點,然后和舊的虛擬節點進行對比,把兩者中的差異轉換為真正的DOM操作。一般是刪除舊節點、插入新節點,并把舊節點和新節點對應的子節點按一定算法依次比對,然后掛載新節點。
造成閃爍問題的原因在于,當Vue改變某些數據時,頁面會出現刷新過程,也就是說,新數據并不會直接在原頁面上更新,而是將整個組件中的DOM重新生成一遍,然后再整個組件更新。
// 父組件{{ item.text }}
上面這個代碼片段就可以輕易的復現DOM閃爍的現象。當我們點一下“添加”按鈕時,整個列表都會重新渲染,并且在某些場景下,重新渲染的效率很低。
總結一下就是,Vue最初渲染頁面時是采用底層方法vdom來實現,優先和html建立觀察器,接著是js交互,使用了虛擬DOM來替代真實DOM的操作來提升性能,但是也因此帶來一個問題:“閃爍”
上一篇python 編程小課堂
下一篇egret json解析