最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

VNode說明&作用

VNode是什么

VNode是JavaScript對象。VNode表示Virtual DOM,用JavaScript對象來描述真實(shí)的DOMDOM標(biāo)簽,屬性,內(nèi)容都變成對象的屬性。就像使用JavaScript對象對一種動物進(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對象,不管Node還是瀏覽器,都可以統(tǒng)一操作,從而獲得了服務(wù)端渲染、原生渲染、手寫渲染函數(shù)等能力。
  2. 減少操作DOM,任何頁面的變化,都只使用VNode進(jìn)行操作對比,只需要在最后一步掛載更新DOM,不需要頻繁操作DOM,從而提高頁面性能。

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ù)看起來十分簡單,先走一遍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對象,已經(jīng)囊括了整個(gè)模板的所有信息,完全可以根據(jù)這個(gè)對象來構(gòu)造真實(shí)DOM。

VNode存放哪些信息

  1. data:存儲節(jié)點(diǎn)的屬性,綁定的事件等
  2. elm:真實(shí)DOM 節(jié)點(diǎn)
  3. context:渲染這個(gè)模板的上下文對象
  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)一步加深對Vue框架的理解與運(yùn)用。

相關(guān)文章

  • vue集成openlayers問題

    vue集成openlayers問題

    這篇文章主要介紹了vue集成openlayers問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue實(shí)現(xiàn)簡單計(jì)算商品價(jià)格

    vue實(shí)現(xiàn)簡單計(jì)算商品價(jià)格

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡單計(jì)算商品價(jià)格,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • vue如何通過ref調(diào)用router-view子組件的方法

    vue如何通過ref調(diào)用router-view子組件的方法

    這篇文章主要介紹了vue?通過ref調(diào)用router-view子組件的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • vue中view-model雙向綁定基礎(chǔ)原理解析

    vue中view-model雙向綁定基礎(chǔ)原理解析

    這篇文章主要介紹了vue中view-model雙向綁定基礎(chǔ)原理,文中給大家介紹了vue雙向綁定的原理總結(jié),本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • vue.js 實(shí)現(xiàn)評價(jià)五角星組件的實(shí)例代碼

    vue.js 實(shí)現(xiàn)評價(jià)五角星組件的實(shí)例代碼

    這篇文章主要介紹了vue.js 實(shí)現(xiàn)評價(jià)五角星組件的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • Vue組件更新數(shù)據(jù)v-model不生效的解決

    Vue組件更新數(shù)據(jù)v-model不生效的解決

    這篇文章主要介紹了Vue組件更新數(shù)據(jù)v-model不生效的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue監(jiān)聽滾動事件的方法

    vue監(jiān)聽滾動事件的方法

    這篇文章主要介紹了vue監(jiān)聽滾動事件的方法,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-12-12
  • vue3在jsx中使用component組件方式

    vue3在jsx中使用component組件方式

    這篇文章主要介紹了vue3在jsx中使用component組件方式,具有很好的 參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue項(xiàng)目新一代狀態(tài)管理工具Pinia的使用教程

    Vue項(xiàng)目新一代狀態(tài)管理工具Pinia的使用教程

    pinia是一個(gè)輕量級的狀態(tài)管理庫,屬于 vue3 生態(tài)圈新的成員之一,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目新一代狀態(tài)管理工具Pinia的使用教程,需要的朋友可以參考下
    2022-11-11
  • Vue使用axios進(jìn)行g(shù)et請求拼接參數(shù)的2種方式詳解

    Vue使用axios進(jìn)行g(shù)et請求拼接參數(shù)的2種方式詳解

    axios中post請求都是要求攜帶參數(shù)進(jìn)行請求,這篇文章主要給大家介紹了關(guān)于Vue使用axios進(jìn)行g(shù)et請求拼接參數(shù)的2種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01

最新評論

德钦县| 鲁山县| 安陆市| 临沂市| 盘山县| 溧阳市| 分宜县| 晋城| 奉化市| 驻马店市| 碌曲县| 杭州市| 东宁县| 犍为县| 天等县| 高邑县| 武隆县| 阿城市| 安宁市| 同德县| 镇平县| 静乐县| 会理县| 夏津县| 封丘县| 昭通市| 娱乐| 万盛区| 磴口县| 德阳市| 定兴县| 宾川县| 镇雄县| 蚌埠市| 永兴县| 资阳市| 宝坻区| 富川| 岑巩县| 贵阳市| 纳雍县|