摘要:對(duì)比步驟用對(duì)象來(lái)表達(dá)結(jié)構(gòu)標(biāo)簽名元素屬性唯一標(biāo)識(shí)子元素格式和父元素一樣有幾個(gè)子元素,用于計(jì)算當(dāng)前元素的索引,處于整個(gè)中的第幾個(gè),方便操作原對(duì)象原對(duì)象渲染成結(jié)構(gòu)修改原對(duì)象對(duì)比哪些節(jié)點(diǎn)被修改類(lèi)型,為標(biāo)簽名改變,為子元素改變刪除或添加,為屬性改變,
dom對(duì)比步驟
1.用js對(duì)象來(lái)表達(dá)dom結(jié)構(gòu)
tagName 標(biāo)簽名
props 元素屬性
key 唯一標(biāo)識(shí)
children 子元素,格式和父元素一樣
count 有幾個(gè)子元素,用于計(jì)算當(dāng)前元素的索引,處于整個(gè)dom中的第幾個(gè),方便dom操作
{ "tagName": "div", "props": { "id": "container" }, "children": [ { "tagName": "h1", "props": { "style": "color:red" }, "children": [ "simple virtual dom" ], "count": 1 }, { "tagName": "p", "props": {}, "children": [ "hello world" ], "count": 1 }, { "tagName": "ul", "props": {}, "children": [ { "tagName": "li", "props": {}, "children": [ "item #1" ], "count": 1 }, { "tagName": "li", "props": {}, "children": [ "item #2" ], "count": 1 } ], "count": 4 } ], "count": 9 }
2.原js對(duì)象渲染成dom結(jié)構(gòu)
simple virtual dom
hello world
- item #1
- item #2
3.修改原js對(duì)象
{ "tagName": "div", "props": { "id": "container2" }, "children": [ { "tagName": "h5", "props": { "style": "color:red" }, "children": [ "simple virtual dom" ], "count": 1 }, { "tagName": "p", "props": {}, "children": [ "hello world2" ], "count": 1 }, { "tagName": "ul", "props": {}, "children": [ { "tagName": "li", "props": {}, "children": [ "item #1" ], "count": 1 }, { "tagName": "li", "props": {}, "children": [ "item #2" ], "count": 1 }, { "tagName": "li", "props": {}, "children": [ "item #3" ], "count": 1 } ], "count": 6 } ], "count": 11 }
4.對(duì)比哪些節(jié)點(diǎn)被修改
type 類(lèi)型,0為標(biāo)簽名改變,1為子元素改變(刪除或添加),2為屬性改變,3為內(nèi)容改變
key 對(duì)象第一層中key值表示索引,原dom中第幾個(gè)元素發(fā)生變化
{ "0": [ { "type": 2, "props": { "id": "container2" } } ], "1": [ { "type": 0, "node": { "tagName": "h5", "props": { "style": "color:red" }, "children": [ "simple virtual dom" ], "count": 1 } } ], "4": [ { "type": 3, "content": "hello world2" } ], "5": [ { "type": 1, "moves": [ { "index": 2, "item": { "tagName": "li", "props": {}, "children": [ "item #3" ], "count": 1 }, "type": 1 } ] } ] }
5.渲染修改后的js對(duì)象
a.標(biāo)簽名改變,直接重新渲染整個(gè)元素,包括元素下的子元素 b.子元素改變,該刪除的刪除,該添加的添加(針對(duì)列表框架有一套自己的計(jì)算方法,可以自行百度去研究) c.屬性改變,操作對(duì)應(yīng)元素的屬性 d.內(nèi)容改變,操作對(duì)應(yīng)元素的內(nèi)容
simple virtual dom
hello world2
- item #1
- item #2
- item #3
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/51817.html
摘要:對(duì)比步驟用對(duì)象來(lái)表達(dá)結(jié)構(gòu)標(biāo)簽名元素屬性唯一標(biāo)識(shí)子元素格式和父元素一樣有幾個(gè)子元素,用于計(jì)算當(dāng)前元素的索引,處于整個(gè)中的第幾個(gè),方便操作原對(duì)象原對(duì)象渲染成結(jié)構(gòu)修改原對(duì)象對(duì)比哪些節(jié)點(diǎn)被修改類(lèi)型,為標(biāo)簽名改變,為子元素改變刪除或添加,為屬性改變, dom對(duì)比步驟 1.用js對(duì)象來(lái)表達(dá)dom結(jié)構(gòu) tagName 標(biāo)簽名props 元素屬性key 唯一標(biāo)識(shí)children 子元素,格式和父元素一...
摘要:表示虛擬節(jié)點(diǎn),為什么叫虛擬節(jié)點(diǎn)呢,因?yàn)椴皇钦娴墓?jié)點(diǎn)。因?yàn)槭菍?duì)象,不管還是瀏覽器,都可以統(tǒng)一操作,從而獲得了服務(wù)端渲染原生渲染手寫(xiě)渲染函數(shù)等能力減少操作。 寫(xiě)文章不容易,點(diǎn)個(gè)贊唄兄弟專(zhuān)注 Vue 源碼分享,文章分為白話版和 源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于 Vue版本 【2.5.17】 如果你覺(jué)得排版難看,請(qǐng)點(diǎn)擊 下面鏈接 或者 拉到 下...
摘要:它會(huì)檢測(cè)出最大靜態(tài)子樹(shù)就是不需要?jiǎng)討B(tài)性的子樹(shù)并且從渲染函數(shù)中萃取出來(lái)。這樣在每次重渲染的時(shí)候,它就會(huì)直接重用完全相同的同時(shí)跳過(guò)比對(duì)。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個(gè)鏈接~手把手教你從零寫(xiě)一個(gè)簡(jiǎn)單的 VUE 感謝有人看我扯技術(shù),這篇文章主要介紹最近非?;鸬膙ue2前端框架的特點(diǎn)和vue2+vuex2+we...
摘要:它會(huì)檢測(cè)出最大靜態(tài)子樹(shù)就是不需要?jiǎng)討B(tài)性的子樹(shù)并且從渲染函數(shù)中萃取出來(lái)。這樣在每次重渲染的時(shí)候,它就會(huì)直接重用完全相同的同時(shí)跳過(guò)比對(duì)。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個(gè)鏈接~手把手教你從零寫(xiě)一個(gè)簡(jiǎn)單的 VUE 感謝有人看我扯技術(shù),這篇文章主要介紹最近非?;鸬膙ue2前端框架的特點(diǎn)和vue2+vuex2+we...
摘要:它會(huì)檢測(cè)出最大靜態(tài)子樹(shù)就是不需要?jiǎng)討B(tài)性的子樹(shù)并且從渲染函數(shù)中萃取出來(lái)。這樣在每次重渲染的時(shí)候,它就會(huì)直接重用完全相同的同時(shí)跳過(guò)比對(duì)。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個(gè)鏈接~手把手教你從零寫(xiě)一個(gè)簡(jiǎn)單的 VUE 感謝有人看我扯技術(shù),這篇文章主要介紹最近非?;鸬膙ue2前端框架的特點(diǎn)和vue2+vuex2+we...
閱讀 2500·2021-11-16 11:45
閱讀 2478·2021-10-11 10:59
閱讀 2284·2021-10-08 10:05
閱讀 3909·2021-09-23 11:30
閱讀 2400·2021-09-07 09:58
閱讀 869·2019-08-30 15:55
閱讀 797·2019-08-30 15:53
閱讀 1945·2019-08-29 17:00