免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VNode簡介
userphoto

2022.12.04 新疆

關(guān)注

VNode說明&作用

VNode是什么

VNode是JavaScript對象。VNode表示Virtual DOM,用JavaScript對象來描述真實的DOMDOM標(biāo)簽,屬性,內(nèi)容都變成對象的屬性。就像使用JavaScript對象對一種動物進(jìn)行說明一樣{name: 'Hello Kitty', age: 1, children: null}

VNode的作用

通過rendertemplate模版描述成VNode,然后進(jìn)行一系列操作之后形成真實的DOM進(jìn)行掛載。

VNode的優(yōu)點
  1. 兼容性強(qiáng),不受執(zhí)行環(huán)境的影響。VNode因為是JS對象,不管Node還是瀏覽器,都可以統(tǒng)一操作,從而獲得了服務(wù)端渲染、原生渲染、手寫渲染函數(shù)等能力。
  2. 減少操作DOM,任何頁面的變化,都只使用VNode進(jìn)行操作對比,只需要在最后一步掛載更新DOM,不需要頻繁操作DOM,從而提高頁面性能。

VNode如何生成

Vue源碼中,VNode是通過一個構(gòu)造函數(shù)生成的。

export default class VNode {
  constructor (
    tag?: string,
    data?: VNodeData,
    children?: ?Array<VNode>,
    text?: string,
    elm?: Node,
    context?: Component,
    componentOptions?: VNodeComponentOptions,
    asyncFactory?: Function
  ) {
    this.tag = tag
    this.data = data
    this.children = children
    this.text = text
    this.elm = elm
    this.ns = undefined
    this.context = context
    this.fnContext = undefined
    this.fnOptions = undefined
    this.fnScopeId = undefined
    this.key = data && data.key
    this.componentOptions = componentOptions
    this.componentInstance = undefined
    this.parent = undefined
    this.raw = false
    this.isStatic = false
    this.isRootInsert = true
    this.isComment = false
    this.isCloned = false
    this.isOnce = false
    this.asyncFactory = asyncFactory
    this.asyncMeta = undefined
    this.isAsyncPlaceholder = false
  }
}

VNode構(gòu)造函數(shù)看起來十分簡單,先走一遍VNode的生成過程。

// 模版
<a class="demo" style="color: red" href="#">
    generator VNode
</a>
// VNode描述
{
  tag: 'a',
  data: {
    calss: 'demo',
    attrs: {
      href: '#'
    },
    style: {
      color: 'red'
    }
  },
  children: ['generator VNode']
}

這個JS對象,已經(jīng)囊括了整個模板的所有信息,完全可以根據(jù)這個對象來構(gòu)造真實DOM。

VNode存放哪些信息

  1. data:存儲節(jié)點的屬性,綁定的事件等
  2. elm:真實DOM 節(jié)點
  3. context:渲染這個模板的上下文對象
  4. isStatic:是否是靜態(tài)節(jié)點

VNode存放

在初始化完選項,解析完模板之后,就需要掛載DOM了。此時就需要生成VNode,才能根據(jù) VNode生成DOM然后掛載。創(chuàng)建出來的VNode需要被存起來,主要存放在三個位置:parent_vnode,$vnode

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
深入剖析:Vue核心之虛擬DOM
前端進(jìn)階-手寫Vue2.0源碼(三)|技術(shù)點評
Vue2源碼分析
越來越受歡迎的Vue想學(xué)么,90后小姐姐今兒來教你
Vue 2.0學(xué)習(xí)筆記:Vue的render函數(shù)
面試官:聊聊對Vue.js框架的理解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服