2020-04-11

vue diff算法分析

diff存在的意義

1.對服務端和瀏覽器端統(tǒng)一一層虛擬dom,這樣無論是服務器預編譯runTime還是
在瀏覽器運行都會形成統(tǒng)一,各部分之間相互隔離。例如

const vnode={
    tagName:'div',
    attrs:{
         'data-name':'test'
     },
     context:'${Vue}',
     data:'a.b',
}

2.性能優(yōu)化。性能優(yōu)化的來源渲染和預編譯的ast 語法轉換。在服務器dev環(huán)境時,通過編譯模板形成模板渲染函數(shù),渲染時只需要調用對應的渲染函數(shù),減少渲染,同時形成函數(shù)緩存,不用每次計算。

<div>{{a*b+2*c}}</div>
const render = (a,b,v) =>{
                 return a*b+2*c;
           }

vue diff算法核心 比較是old 和新的 虛擬dom 對象層次遞歸比較的,

1.相識性

const sameVnode=>(a, b) {
        return (
            // key來源于v-for或者自定的:key屬性
            a.key === b.key &&
            a.tag === b.tag &&
            a.isComment === b.isComment &&
            isDef(a.data) === isDef(b.data) &&
            sameInputType(a, b)
        )
    }

相似就不更新,不相似就update

2.比較過程

1. old 序列為 ABCD 新序列為 ABD

          直接刪除C節(jié)點

2. old 序列為 BACD 新序列為 ABD

           vue保留B react干掉B
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、數(shù)據(jù)庫視圖 (一)什么是視圖? 視圖是一種虛擬存在的表,是一個邏輯表,本身并不包含數(shù)據(jù)。是由行和列組成的數(shù)據(jù),...
    從來不是我_4320閱讀 235評論 0 0
  • 1.顯示目錄結構信息 tree /oldboy --- 顯示指定目錄中的所有數(shù)據(jù)和所有結構信息tree -L ...
    ThreeH17閱讀 315評論 0 0
  • 1 前言 相信有一定java開發(fā)經驗的人或多或少都會遇到OutOfMemoryError的問題,這個問...
    min成功閱讀 469評論 0 0
  • 小時后曾經看過老版《三國演義》,時間過久記不清晰了。于2019年發(fā)現(xiàn)其豆瓣評分9.4,可見經久不衰,所以重新?lián)炱鹂?..
    投資的藝術閱讀 174評論 0 1
  • 為了方便讀者閱讀我為《整理的藝術》一套4本書寫的系列書評,我會將每篇書評按發(fā)表順序收錄在目錄里。單篇書評順序我會標...
    安雅敏敏閱讀 1,603評論 7 40

友情鏈接更多精彩內容