国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue2和vue3的渲染過程簡述版

這篇具有很好參考價值的文章主要介紹了vue2和vue3的渲染過程簡述版。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

vue2和vue3的渲染過程簡述版


vue2渲染過程

在Vue 2的渲染過程中,包括以下幾個關(guān)鍵步驟:

  1. 解析模板:Vue 2使用基于HTML語法的模板,首先會將模板解析成抽象語法樹(AST),用于后續(xù)的編譯和渲染過程。

  2. 編譯模板:將解析后的抽象語法樹編譯成渲染函數(shù)。編譯過程包括靜態(tài)標(biāo)記、生成可復(fù)用的渲染函數(shù)以及處理動態(tài)綁定等操作。

  • 靜態(tài)標(biāo)記階段通過遍歷抽象語法樹,給其中的靜態(tài)節(jié)點打上標(biāo)記,這些節(jié)點在重新渲染時可以被跳過,從而提升渲染性能。
  • 生成可復(fù)用的渲染函數(shù)階段會將剩余的動態(tài)節(jié)點轉(zhuǎn)換成JavaScript的渲染函數(shù),這些函數(shù)接收數(shù)據(jù)作為入?yún)ⅲ祷靥摂MDOM(Virtual DOM)。
  • 處理動態(tài)綁定階段會將具有動態(tài)綁定的節(jié)點與對應(yīng)的響應(yīng)式數(shù)據(jù)建立關(guān)聯(lián),當(dāng)數(shù)據(jù)發(fā)生變化時,會觸發(fā)重新渲染的過程。
  1. 創(chuàng)建實例:通過Vue構(gòu)造函數(shù)創(chuàng)建組件實例,并初始化相關(guān)屬性和事件。

  2. 數(shù)據(jù)響應(yīng)式:Vue使用雙向綁定機(jī)制,在數(shù)據(jù)發(fā)生變化時自動更新對應(yīng)的視圖。在渲染過程中,Vue會為每個響應(yīng)式數(shù)據(jù)對象設(shè)置偵聽器,當(dāng)數(shù)據(jù)發(fā)生改變時,會觸發(fā)重新渲染的過程。

  3. 渲染虛擬DOM:Vue根據(jù)渲染函數(shù)生成虛擬DOM(Virtual DOM),虛擬DOM是一種輕量級的JavaScript對象,用于表示真實的DOM結(jié)構(gòu)。

Diff算法會逐層比較新舊虛擬DOM樹的節(jié)點,找出需要更新的節(jié)點。
使用key來唯一標(biāo)識節(jié)點,可以幫助Diff算法更準(zhǔn)確地找出差異。

  1. Diff算法:在重新渲染之前,Vue會進(jìn)行虛擬DOM的比對,通過Diff算法找出需要更新的部分。Diff算法會高效地找出差異,并最小化DOM操作,提高渲染性能。

  2. 應(yīng)用更新:根據(jù)Diff算法的結(jié)果,Vue將只更新需要修改的部分DOM節(jié)點,而不是重新渲染整個視圖。這樣可以減少不必要的計算和DOM操作,提高性能。

  3. 更新后鉤子:在完成DOM更新后,Vue會觸發(fā)相應(yīng)的生命周期鉤子函數(shù),如updated,供開發(fā)者進(jìn)行后續(xù)操作或處理副作用。

以上是Vue 2的簡要渲染過程,通過將模板解析成渲染函數(shù)、創(chuàng)建實例、生成虛擬DOM以及更新差異等步驟,Vue能夠高效地實現(xiàn)數(shù)據(jù)驅(qū)動的視圖更新。

vue3渲染過程

在Vue 3中,渲染過程主要包括以下幾個步驟:

  1. 解析模板:Vue 3使用編譯器將模板解析成渲染函數(shù),這是在構(gòu)建階段完成的。渲染函數(shù)可以理解為一個JavaScript函數(shù),用于生成虛擬DOM。

  2. 創(chuàng)建響應(yīng)式數(shù)據(jù):Vue 3使用reactive()函數(shù)對數(shù)據(jù)進(jìn)行響應(yīng)式處理。該函數(shù)會將數(shù)據(jù)轉(zhuǎn)換成響應(yīng)式對象,使得當(dāng)數(shù)據(jù)發(fā)生變化時,能夠觸發(fā)視圖的重新渲染。

  3. 初始化組件實例:在創(chuàng)建組件實例時,Vue 3會執(zhí)行一系列初始化操作,包括設(shè)置組件的初始狀態(tài)、注入依賴項等。

  4. 渲染虛擬DOM:調(diào)用渲染函數(shù)生成虛擬DOM(VNode)。虛擬DOM是一個輕量級的JavaScript對象,它描述了要渲染到頁面上的元素及其屬性。

  5. 比較與更新:Vue 3通過算法優(yōu)化,將新舊虛擬DOM進(jìn)行比較,找出兩者之間的差異。這個過程稱為虛擬DOM diff。然后,根據(jù)差異進(jìn)行有針對性地更新。

  6. 生成真實DOM:根據(jù)最新的虛擬DOM,Vue 3會進(jìn)行真實DOM的創(chuàng)建或更新。

  7. 將真實DOM插入頁面:在更新完真實DOM后,Vue 3將其插入到頁面中,用戶最終看到的就是這個經(jīng)過更新的頁面。

  8. 監(jiān)聽數(shù)據(jù)變化:在組件實例被掛載到頁面上后,Vue 3會自動建立數(shù)據(jù)的觀察者機(jī)制,當(dāng)數(shù)據(jù)發(fā)生變化時,會通知相關(guān)依賴進(jìn)行重新渲染。

優(yōu)化和擴(kuò)充

在Vue 3的渲染過程中,除了上述提到的步驟,還有一些優(yōu)化和擴(kuò)充的內(nèi)容:

  1. 編譯優(yōu)化:Vue 3使用了靜態(tài)模板提升(Static Template Hoisting)的技術(shù),將靜態(tài)節(jié)點轉(zhuǎn)換成常量,在渲染過程中減少不必要的計算。這樣可以降低虛擬DOM的生成和比對過程的開銷,提高性能。

  2. 標(biāo)記優(yōu)化:Vue 3引入了遞增式的靜態(tài)標(biāo)記(Incremental Static Marking),通過分層次、增量式的標(biāo)記方式,將模板標(biāo)記為可靜態(tài)節(jié)點、需要動態(tài)跟蹤的節(jié)點以及可能產(chǎn)生動態(tài)內(nèi)容的節(jié)點,進(jìn)一步減少不必要的更新操作。

  3. 靜態(tài)提升:Vue 3可以將靜態(tài)節(jié)點進(jìn)行提升,從而避免重復(fù)創(chuàng)建和比對。這意味著在重新渲染時,Vue 3可以直接復(fù)用之前生成的靜態(tài)節(jié)點,而無需重新生成和比對。

  4. Fragments:Vue 3支持Fragments(片段),可以在組件內(nèi)部渲染多個根級別的元素,而無需包裹額外的父級元素。這樣可以更靈活地組織組件的結(jié)構(gòu)。

  5. Suspense:Vue 3引入了Suspense機(jī)制,用于處理異步組件的渲染。通過Suspense可以在異步組件加載中顯示自定義的等待界面,提升用戶體驗。

  6. Teleport:Vue 3提供了Teleport(傳送門)功能,可以將組件的內(nèi)容渲染到DOM結(jié)構(gòu)的其他位置,而不受組件嵌套層次的限制。這在處理模態(tài)框、彈出菜單等場景下非常有用。

Vue 3在渲染過程中進(jìn)行了多方面的優(yōu)化,包括編譯優(yōu)化、標(biāo)記優(yōu)化、靜態(tài)提升等,以提升整體性能。此外,還引入了一些新特性如Fragments、Suspense和Teleport,為開發(fā)者提供了更加靈活和便利的渲染方式。

vue2和vue3對比

Vue 3通過使用靜態(tài)模板提升、編譯時優(yōu)化等技術(shù)手段,使得整個渲染過程更為高效,并且相較于Vue 2有更好的性能表現(xiàn)。同時,Vue 3還引入了遞增式的靜態(tài)標(biāo)記,可以進(jìn)一步減少不必要的更新操作,提升渲染性能。

Vue 3的渲染過程包括解析模板、創(chuàng)建響應(yīng)式數(shù)據(jù)、初始化組件實例、渲染虛擬DOM、比較與更新、生成真實DOM、將真實DOM插入頁面和監(jiān)聽數(shù)據(jù)變化等環(huán)節(jié)。通過對比新舊虛擬DOM的差異,Vue 3能夠高效地更新頁面,并提供響應(yīng)式的數(shù)據(jù)綁定。文章來源地址http://www.zghlxwxcb.cn/news/detail-496835.html

到了這里,關(guān)于vue2和vue3的渲染過程簡述版的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Vue2 第五節(jié) class與style綁定,條件渲染和列表渲染

    Vue2 第五節(jié) class與style綁定,條件渲染和列表渲染

    1.class與style綁定 2.條件渲染 3.列表渲染 (1)綁定class 就是用v-bind綁定一個class 有三種不同的寫法 1. 字符串寫法:適用于樣式的類名不確定,需要動態(tài)指定 ? ?2.數(shù)組寫法:適用于要綁定的個數(shù)個名字都不確定,數(shù)組中的樣式連同class里面有的樣式都會綁定到div中 ? ?3. 對象寫

    2024年02月15日
    瀏覽(23)
  • Vue2 - 模板、渲染、事件處理、表單輸入綁定

    本文內(nèi)容來自:https://www.bilibili.com/video/BV1Rs4y127j8/ 1、文本 數(shù)據(jù)綁定最常見的形式就是使用“Mustache” (雙大括號) 語法的文本插值 一般配合 js 中的 data() 設(shè)置數(shù)據(jù) 2、原始 HTML 雙大括號會將數(shù)據(jù)解釋為普通文本,而非 HTML 代碼。為了輸出真正的 HTML,你需要使用 v-html 指令 3、

    2024年02月16日
    瀏覽(28)
  • vue2使用 element表格展開功能渲染子表格

    vue2使用 element表格展開功能渲染子表格

    ?默認(rèn)樣式 修改后? ?樣式2 模擬數(shù)據(jù) 修改默認(rèn)樣式?

    2024年01月17日
    瀏覽(22)
  • Vue2技能樹(3)-聲明式渲染、指令大全、生命周期函數(shù)

    ?? 點贊,你的認(rèn)可是我創(chuàng)作的動力! ?? 收藏,你的青睞是我努力的方向! ?? 評論,你的意見是我進(jìn)步的財富! Vue2技能樹(1)-介紹、導(dǎo)入使用、響應(yīng)式數(shù)據(jù)綁定、組件化開發(fā) vue2技能樹(2)-模板語法、vue的工具鏈、漸進(jìn)式框架 Vue2技能樹(3)-聲明式渲染、指令大全、生命周

    2024年02月07日
    瀏覽(26)
  • vue2和vue3

    1. 雙向數(shù)據(jù)綁定原理發(fā)生了改變 vue2的雙向數(shù)據(jù)綁定是利用了es5 的一個API Object.definepropert() 對數(shù)據(jù)進(jìn)行劫持 結(jié)合發(fā)布訂閱模式來實現(xiàn)的。vue3中使用了es6的proxyAPI對數(shù)據(jù)進(jìn)行處理。 相比與vue2,使用proxy API 優(yōu)勢有:defineProperty只能監(jiān)聽某個屬性,不能對全對象進(jìn)行監(jiān)聽;可以省

    2024年02月12日
    瀏覽(23)
  • vue2+vue3——42+

    vue2+vue3——42+

    vue2 v-cloak指令【14:14】 調(diào)網(wǎng)速 : no throttling 不讓慢 ; offline 斷網(wǎng) JS 阻塞 紅色 外部JS ; 綠色 網(wǎng)頁核心 ; 粉色 JS 腳本 紅色 外部JS 我要走不了, 誰都別想走 : 綠色 不可以渲染到頁面,放到頁面容器 ; 粉色 JS腳本 不可以被執(zhí)行 ,沒有容器 換位置: body 最下方 v-cloak 本質(zhì)

    2024年02月02日
    瀏覽(32)
  • vue3對比vue2

    使用vite創(chuàng)建vue項目 什么是vite? 新一代前端構(gòu)建工具 優(yōu)勢如下: 開發(fā)環(huán)境中,無須打包操作,可快速的冷啟動 清亮快速的熱重載 真正的按需編譯,不在等待整個應(yīng)用編譯完成 注意,vite初始化后需要你手動安裝一下node_modules vue3中的根標(biāo)簽可以不止一個 vue2就不行 setup vue3中一個新的

    2024年02月08日
    瀏覽(15)
  • vue2和vue3的區(qū)別(Vue3升級部分)

    區(qū)別有兩個目的:一面試說一下書面化的表達(dá),二工作需要升級大白話說一下項目應(yīng)用的區(qū)別。 雙向數(shù)據(jù)綁定: vue2 的雙向數(shù)據(jù)綁定是利?ES5 的?個 API ,Object.defineProperty()對數(shù)據(jù)進(jìn)?劫持 結(jié)合 發(fā)布訂閱(gettersetter)模式的?式來實現(xiàn)的。 vue3 中使?了 ES6 的 ProxyAPI 對數(shù)據(jù)

    2024年02月12日
    瀏覽(28)
  • 關(guān)于vue2與vue3

    關(guān)于vue2與vue3

    vue是組件化開發(fā)框架,所以對于vue應(yīng)用來說組件間的數(shù)據(jù)通信非常重要。 1. 組件通信常用方式有以下8種: props $emit/ $on $children /$parent $attrs/ $listeners ref $root eventbus vuex 注意vue3中廢棄的幾個API 在vue3中廢除$children 移除$listeners $on、$off和$once實例方法被移除 2.根據(jù)組件之間關(guān)系討

    2024年02月05日
    瀏覽(20)
  • vue3和vue2區(qū)別

    在 Vue 2 中,使用了 Object.defineProperty 來實現(xiàn)數(shù)據(jù)的響應(yīng)式。它通過逐個定義對象屬性的方式來進(jìn)行數(shù)據(jù)的劫持和監(jiān)聽。這種方式存在一些限制,例如無法監(jiān)聽新增的屬性,需要使用 Vue 提供的 $set 方法來實現(xiàn)響應(yīng)式。此外,由于需要逐個定義屬性,對于大型對象或數(shù)組的性能

    2024年01月17日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包