国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Vue2.x中的Render函數詳解

2019-11-19 16:27:37
字體:
來源:轉載
供稿:網友

Render函數是Vue2.x版本新增的一個函數;使用虛擬dom來渲染節點提升性能,因為它是基于JavaScript計算。通過使用createElement(h)來創建dom節點。createElement是render的核心方法。其Vue編譯的時候會把template里面的節點解析成虛擬dom;

什么是虛擬dom?

虛擬dom不同于真正的dom,它是一個JavaScript對象。當狀態發生變化的時候虛擬dom會進行一個diff判斷/運算;然后判斷哪些dom是需要被替換的而不是全部重繪,所以性能會比dom操作高很多。

下面看一張Aresn大神總結的一張圖:

Vue2.x版本中VNode屬性:

tag:當前節點標簽名,

data:當前節點數據對象,

children:子節點數組,

text:當前節點文本,

elm:當前虛擬節點對應的真實dom節點,

ns:節點的namespace( 名稱空間),

content:編譯作用域,

functionalContext:函數化組件的作用域,即全局上下文,

key:節點標識,有利于patch優化,

componentOptions:創建組件實例時的options,

child:當前節點對應的組件實例,

parent:組件的占位節點,

raw:原始html,

isStatic:是否是靜態節點,

isRootInsert:是否作為跟節點插入,若被<transition>包裹的節點,該屬性值為false,

isComment:是否為注釋節點,

isCloned:是否為克隆節點,

isOnce:是否只改變(渲染)一次,或是否有v-once指令;

其中這里面又有幾種VNode類型:

Aresn大神總結的很好:

TextVNode:文本節點,

ElementVNode:普通元素節點,

ComponentVNode:組件節點,

EmptyVNode:空節點,或者說是沒有內容的注釋節點,

CloneVNode:克隆節點,可以是以上任意類型節點

說了那么多;到底什么時候用虛擬dom才比較好呢?其實 我們使用的單文件組件就已經夠好了。但是當某些代碼冗余的時候如果寫單文件組件的話會有好多重復的內容;

接下來介紹其核心函數;

createElement:

createElement接收3個參數:

第一個參數可以是HTML標簽名,組件或者函數都可以;此參數是必須的;

第二個為數據對象(可選);

第三個為子節點(可選)。

附上一個非常簡單的createElement函數demo;

 var app = new Vue({   el:"#app",   render:createElement => {     eturn createElement(       'h2',       [         createElement(           'a',           {             domProps:{               href:"#biaoti"             }           },           "標題"         )        ]             );      } });

這只是一個createElement函數的使用,而Vue2中VNodeData

class: v-bind/:class

style:v-bind/:style

attrs:dom屬性,如id

props:props,

on:自定義事件等,

 nativeOn:原生事件

像這些也可以在render函數中實現,若VNode是組件或含有組件的slot,那么VNode必須是唯一。

像平常開發過程中單文件組件中template寫法更為簡單,可讀性也高。如果是webpack進行打包的話template也會預編譯成render函數。

這里demo栗子暫時還沒寫那么多。這里只是一個簡單的介紹。若有更好的歡迎大家一起學習討論。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 衡水市| 余干县| 万源市| 南陵县| 旬阳县| 双牌县| 泾川县| 颍上县| 德令哈市| 泸溪县| 靖江市| 沁阳市| 梁平县| 蚌埠市| 东乡县| 隆林| 阿图什市| 隆尧县| 利川市| 普洱| 肇庆市| 湾仔区| 治县。| 尉犁县| 大渡口区| 怀仁县| 上蔡县| 青阳县| 新沂市| 舟曲县| 伊宁县| 砀山县| 武穴市| 信阳市| 襄汾县| 九台市| 东明县| 上蔡县| 永安市| 玛纳斯县| 宁化县|