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

Vue組件渲染與更新實現(xiàn)過程淺析

 更新時間:2023年03月03日 09:04:04   作者:周興  
這篇文章主要介紹了Vue組件渲染與更新實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

1. 模板編譯

Vue的模板編譯就是將模板字符串轉(zhuǎn)換為渲染函數(shù)的過程。具體來說,當(dāng)組件的生命周期執(zhí)行到created和beforeMounted之間時,Vue會將模板(template)編譯成渲染函數(shù)(render),render函數(shù)是一個純JavaScript函數(shù),由with語句構(gòu)成,它接收一個Vue組件實例作為參數(shù)。當(dāng)render函數(shù)執(zhí)行時會調(diào)用h函數(shù),生成虛擬DOM節(jié)點(vnode)。

下面給出了常見的template模板以及模板編譯后的結(jié)果:

插值

`<p>{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{message}}</p>`
with(this){return _c('p',[_v(_s(message))])}
// _c 表示 createElement   也就是h函數(shù)  返回vnode 
// _v 表示 createTextVNode
// _s 表示 toString

表達式

`<p>{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{flag ? message : 'no message found'}}</p>`
with(this){<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->return _c('p',[_v(_s(flag ? message : 'no message found'))])}

屬性和動態(tài)屬性

`<div id="div1" class="container">
	<img :src="imgUrl"/>
</div>`
with(this){
	return _c('div',
			{staticClass:"container",attrs:{"id":"div1"}},
			[_c('img',{attrs:{"src":imgUrl}})]
			)
}

條件

`<div>
    <p v-if="flag === 'a'">A</p>
    <p v-else>B</p>
</div>`
with(this){
	return _c('div',[(flag === 'a')?_c('p',[_v("A")]):_c('p',[_v("B")])])
}

循環(huán)

`<ul>
    <li v-for="item in list" :key="item.id">{{item.title}}</li>
</ul>`
with(this){
	return _c('ul',_l((list),
		function(item){return _c('li',{key:item.id},
		[_v(_s(item.title))])}),0
		)
}

事件

`<button @click="clickHandler">submit</button>`
with(this){return _c('button',{on:{"click":clickHandler}},[_v("submit")])}

v-model

`<input type="text" v-model="name">`
with(this){
return _c('input',
	{directives:[{name:"model",rawName:"v-model",value:(name),expression:"name"}],attrs:{"type":"text"},domProps:{"value":(name)},on:{"input":function($event){if($event.target.composing)return;name=$event.target.value}}}
	)
}

2. 組件渲染和更新

Vue組件渲染和更新的過程簡單地概況為以下幾個步驟:

  • 初始化組件實例:在渲染一個組件之前,Vue會創(chuàng)建一個組件實例,并將組件的選項對象進行合并、處理,最終形成一個組件實例的配置對象。
  • 渲染組件:Vue將組件實例的配置對象轉(zhuǎn)化為一個渲染函數(shù),并執(zhí)行該渲染函數(shù),生成一個虛擬DOM樹。此時,Vue會對虛擬DOM樹進行初次渲染,將組件顯示在頁面上。
  • 監(jiān)聽數(shù)據(jù)變化:當(dāng)組件實例中的響應(yīng)式數(shù)據(jù)發(fā)生變化時,Vue會立即檢測到這些變化,并重新計算組件的渲染函數(shù),生成一個新的虛擬DOM樹。
  • 對比新舊虛擬DOM樹:Vue會將新生成的虛擬DOM樹和上一次渲染時生成的虛擬DOM樹進行比較,找出需要更新的部分。
  • 更新組件:Vue會將需要更新的部分進行精細化地修改,使組件達到更新的效果。如果有需要,Vue會重新渲染整個組件。

到此這篇關(guān)于Vue組件渲染與更新實現(xiàn)過程淺析的文章就介紹到這了,更多相關(guān)Vue組件渲染內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • effect返回runner單測實現(xiàn)示例詳解

    effect返回runner單測實現(xiàn)示例詳解

    這篇文章主要為大家介紹了effect返回runner單測實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • vue中elementUI里面一些插件的使用

    vue中elementUI里面一些插件的使用

    Element UI是一套基于Vue的桌面端組件庫,封裝好了很多常用的UI組件,下面這篇文章主要給大家介紹了關(guān)于vue中elementUI里面一些插件的使用方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Vue路由自動添加#的問題及解決

    Vue路由自動添加#的問題及解決

    這篇文章主要介紹了Vue路由自動添加#的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 關(guān)于Vue 3.0引入百度地圖不兼容的解決辦法

    關(guān)于Vue 3.0引入百度地圖不兼容的解決辦法

    這篇文章主要介紹了關(guān)于Vue 3.0引入百度地圖不兼容的解決辦法,本文通過實例代碼給大家分享解決方法,需要的朋友可以參考下
    2022-08-08
  • vue實現(xiàn)記事本功能

    vue實現(xiàn)記事本功能

    這篇文章主要為大家詳細介紹了vue實現(xiàn)記事本功能,記事本可以進行添加刪除事件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Vue 簡單實現(xiàn)前端權(quán)限控制的示例

    Vue 簡單實現(xiàn)前端權(quán)限控制的示例

    這篇文章主要介紹了Vue 簡單實現(xiàn)前端權(quán)限控制的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • vue router仿天貓底部導(dǎo)航欄功能

    vue router仿天貓底部導(dǎo)航欄功能

    這篇文章主要介紹了vue router仿天貓底部導(dǎo)航欄功能,需要的朋友可以參考下
    2017-10-10
  • 解決vue的變量在settimeout內(nèi)部效果失效的問題

    解決vue的變量在settimeout內(nèi)部效果失效的問題

    今天小編就為大家分享一篇解決vue的變量在settimeout內(nèi)部效果失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Vue+WebSocket頁面實時刷新長連接的實現(xiàn)

    Vue+WebSocket頁面實時刷新長連接的實現(xiàn)

    最近vue項目要做數(shù)據(jù)實時刷新,數(shù)據(jù)較大,會出現(xiàn)卡死情況,所以本文主要介紹了頁面實時刷新長連接,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • axios對請求各種異常情況處理的封裝方法

    axios對請求各種異常情況處理的封裝方法

    今天小編就為大家分享一篇axios對請求各種異常情況處理的封裝方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09

最新評論

宜宾市| 墨脱县| 大悟县| 巴马| 巴中市| 南平市| 永顺县| 潮州市| 金华市| 南城县| 阿拉善左旗| 奉化市| 合山市| 北海市| 绵阳市| 通化市| 安宁市| 泰州市| 乌鲁木齐县| 淅川县| 永修县| 富平县| 德庆县| 十堰市| 阿瓦提县| 玛纳斯县| 应城市| 深水埗区| 中西区| 兰溪市| 泸西县| 绍兴县| 双流县| 庄河市| 邹城市| 远安县| 英吉沙县| 舒兰市| 贺兰县| 荔浦县| 南丰县|