真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Vue2.x中的Render函數(shù)詳解

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

10年積累的成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有市南免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

什么是虛擬dom?

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

下面看一張Aresn大神總結(jié)的一張圖:

Vue2.x中的Render函數(shù)詳解

Vue2.x版本中VNode屬性:

tag:當前節(jié)點標簽名,

data:當前節(jié)點數(shù)據(jù)對象,

children:子節(jié)點數(shù)組,

text:當前節(jié)點文本,

elm:當前虛擬節(jié)點對應(yīng)的真實dom節(jié)點,

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

content:編譯作用域,

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

key:節(jié)點標識,有利于patch優(yōu)化,

componentOptions:創(chuàng)建組件實例時的options,

child:當前節(jié)點對應(yīng)的組件實例,

parent:組件的占位節(jié)點,

raw:原始html,

isStatic:是否是靜態(tài)節(jié)點,

isRootInsert:是否作為跟節(jié)點插入,若被包裹的節(jié)點,該屬性值為false,

isComment:是否為注釋節(jié)點,

isCloned:是否為克隆節(jié)點,

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

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

Aresn大神總結(jié)的很好:

Vue2.x中的Render函數(shù)詳解

TextVNode:文本節(jié)點,

ElementVNode:普通元素節(jié)點,

ComponentVNode:組件節(jié)點,

EmptyVNode:空節(jié)點,或者說是沒有內(nèi)容的注釋節(jié)點,

CloneVNode:克隆節(jié)點,可以是以上任意類型節(jié)點

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

接下來介紹其核心函數(shù);

createElement:

createElement接收3個參數(shù):

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

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

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

附上一個非常簡單的createElement函數(shù)demo;

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

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

class: v-bind/:class

style:v-bind/:style

attrs:dom屬性,如id

props:props,

on:自定義事件等,

 nativeOn:原生事件

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

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

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


新聞標題:Vue2.x中的Render函數(shù)詳解
鏈接分享:http://weahome.cn/article/pecjhj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部