1. 程式人生 > >初始Vue之 v-if 與 v-show的區別

初始Vue之 v-if 與 v-show的區別

簡單來說,v-if 的初始化較快,但切換代價高;v-show 初始化慢,但切換成本低

1.共同點

都是動態顯示DOM元素

2.區別

(1)手段: v-if是動態的向DOM樹內新增或者刪除DOM元素; v-show是通過設定DOM元素的display樣式屬性控制顯隱; (2)編譯過程: v-if切換有一個區域性編譯/解除安裝的過程,切換過程中合適地銷燬和重建內部的事件監聽和子元件; v-show只是簡單的基於css切換; (3)編譯條件: v-if是惰性的,如果初始條件為假,則什麼也不做;只有在條件第一次變為真時才開始區域性編譯(編譯被快取?編譯被快取後,然後再切換的時候進行區域性解除安裝); v-show是在任何條件下(首次條件是否為真)都被編譯,然後被快取,而且DOM元素保留; (4)效能消耗: v-if有更高的切換消耗; v-show有更高的初始渲染消耗; (5)使用場景: v-if適合運營條件不大可能改變; v-show適合頻繁切換。

  • v-else 保證上方兄弟節點存在v-if || v-else-if
    • v-if v-else 只會有其一存在
  • v-show 隱藏或者顯示元素