欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

VNode虛擬節(jié)點(diǎn)實(shí)例簡(jiǎn)析

 更新時(shí)間:2023年06月06日 09:06:19   作者:諦聽  
這篇文章主要介紹了VNode虛擬節(jié)點(diǎn),結(jié)合實(shí)例形式分析了VNode虛擬節(jié)點(diǎn)的基本功能、原理與實(shí)現(xiàn)方法,需要的朋友可以參考下

VNode說明&作用

VNode是什么

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

VNode的作用

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

VNode的優(yōu)點(diǎn)

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

VNode如何生成

Vue源碼中,VNode是通過一個(gè)構(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ù)看起來十分簡(jiǎn)單,先走一遍VNode的生成過程。

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

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

VNode存放哪些信息

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

VNode存放

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

后記

VNode虛擬節(jié)點(diǎn)是Vue框架中一個(gè)非常重要的概念,深入的學(xué)習(xí)與了解,有助于進(jìn)一步加深對(duì)Vue框架的理解與運(yùn)用。

相關(guān)文章

  • vue+elementUI配置表格的列顯示與隱藏

    vue+elementUI配置表格的列顯示與隱藏

    這篇文章主要為大家詳細(xì)介紹了vue+elementUI配置表格的列顯示與隱藏,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 淺談vuejs實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)視圖原理

    淺談vuejs實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)視圖原理

    這篇文章主要介紹了淺談vuejs實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)視圖原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • vue使用echarts實(shí)現(xiàn)水平柱形圖實(shí)例

    vue使用echarts實(shí)現(xiàn)水平柱形圖實(shí)例

    這篇文章主要介紹了vue使用echarts實(shí)現(xiàn)水平柱形圖實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue3動(dòng)態(tài)路由+菜單欄的實(shí)現(xiàn)示例

    vue3動(dòng)態(tài)路由+菜單欄的實(shí)現(xiàn)示例

    在后臺(tái)管理系統(tǒng),可以根據(jù)登錄用戶的不同返回不同路由,頁(yè)面也會(huì)根據(jù)這些路由生成對(duì)應(yīng)的菜單,本文主要介紹了vue3動(dòng)態(tài)路由+菜單欄的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-04-04
  • vue中的slot封裝組件彈窗

    vue中的slot封裝組件彈窗

    這篇文章主要介紹了vue中的slot封裝組件彈窗,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 關(guān)于ElementUI自定義Table支持render

    關(guān)于ElementUI自定義Table支持render

    這篇文章主要介紹了關(guān)于ElementUI自定義Table支持render,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue使用swiper問題(5.2.0版本,避免踩坑)

    Vue使用swiper問題(5.2.0版本,避免踩坑)

    這篇文章主要介紹了Vue使用swiper問題(5.2.0版本,避免踩坑),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 詳解在不使用ssr的情況下解決Vue單頁(yè)面SEO問題

    詳解在不使用ssr的情況下解決Vue單頁(yè)面SEO問題

    這篇文章主要介紹了在不使用ssr的情況下解決Vue單頁(yè)面SEO問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • vue引入子組件命名不規(guī)范錯(cuò)誤的解決方案

    vue引入子組件命名不規(guī)范錯(cuò)誤的解決方案

    這篇文章主要介紹了vue引入子組件命名不規(guī)范錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 前端框架學(xué)習(xí)總結(jié)之Angular、React與Vue的比較詳解

    前端框架學(xué)習(xí)總結(jié)之Angular、React與Vue的比較詳解

    這篇文章主要跟大家分享了關(guān)于前端框架中Angular.js、React.js與Vue.js的全方位比較,文章介紹的非常詳細(xì),對(duì)大家進(jìn)行區(qū)分對(duì)比這三者之間的差異區(qū)別很有幫助,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03

最新評(píng)論