render函數
Vue2與Vue1最大的區別是Vue2使用虛擬節點更新DOM,提示渲染性能。
Vue中的虛擬節點是一個js對象
render函數的作用
render函數通過createElement參數創建virtualDom,從而簡化組件的寫法。適用於組件中有大量代碼是重復的場景,使用Render函數在其中通過書寫js方法生成virtualDom。
render 函數 跟 template 一樣都是創建 html 模板的,但是有些場景中用 template 實現起來代碼冗長繁瑣而且有大量重復,這時候就可以用 render 函數。
render方法的實質就是生成template模板;
-
通過調用一個方法(h)來生成,而這個方法(h)是通過render方法的參數傳遞給它的;
-
這個方法有三個參數,分別提供標簽名,標簽相關屬性,標簽內部的html內容
-
通過這三個參數,可以生成一個完整的模板
h函數/createElement
因為vue是虛擬DOM,所以在拿到template模板時也要轉譯成VNode的函數,而用render函數構建DOM,vue就免去了轉譯的過程。當使用render函數描述虛擬DOM時,vue提供一個函數,這個函數是就構建虛擬DOM所需要的工具。官網上給他起了個名字叫createElement。還有約定的簡寫叫h。
參數
createElement有三個參數,第一個參數為html標簽或者組件或者函數,這個參數是必選參數。第二個參數可選,對應屬性中的數據對象。第三個參數也是可選參數,對應子節點,子節點也是用createElement方法構建。
第二個參數的可以定義屬性類型
Render的寫法比較復雜且可讀性差,一般都用template來實現,只有特殊的場景才使用Render函數。
在組件樹中,VNode如果是組件或者含有組件的slot,那么VNode必須唯一。
參考