闡述一下對vue虛擬dom的理解

1.什么是虛擬dom桥狡?

虛擬dom本質(zhì)上就是一個普通的JS對象,用于描述視圖的界面結(jié)構(gòu)

在vue中颅围,每個組件都有一個render函數(shù)伟葫,每個render函數(shù)都會返回一個虛擬dom樹,這也就意味著每個組件都對應(yīng)一棵虛擬DOM樹


2.為什么需要虛擬dom院促?

在vue中筏养,渲染視圖會調(diào)用render函數(shù),這種渲染不僅發(fā)生在組件創(chuàng)建時常拓,同時發(fā)生在視圖依賴的數(shù)據(jù)更新時渐溶。如果在渲染時,直接使用真實DOM弄抬,由于真實DOM的創(chuàng)建茎辐、更新、插入等操作會帶來大量的性能損耗掂恕,從而就會極大的降低渲染效率拖陆。

因此,vue在渲染時懊亡,使用虛擬dom來替代真實dom慕蔚,主要為解決渲染效率的問題。

3. 虛擬dom是如何轉(zhuǎn)換為真實dom的斋配?

在一個組件實例首次被渲染時孔飒,它先生成虛擬dom樹,然后根據(jù)虛擬dom樹創(chuàng)建真實dom艰争,并把真實dom掛載到頁面中合適的位置坏瞄,此時,每個虛擬dom便會對應(yīng)一個真實的dom甩卓。

如果一個組件受響應(yīng)式數(shù)據(jù)變化的影響鸠匀,需要重新渲染時,它仍然會重新調(diào)用render函數(shù)逾柿,創(chuàng)建出一個新的虛擬dom樹缀棍,用新樹和舊樹對比,通過對比机错,vue會找到最小更新量爬范,然后更新必要的虛擬dom節(jié)點,最后弱匪,這些更新過的虛擬節(jié)點青瀑,會去修改它們對應(yīng)的真實dom

這樣一來,就保證了對真實dom達(dá)到最小的改動。

4.模板和虛擬dom的關(guān)系

vue框架中有一個compile模塊斥难,它主要負(fù)責(zé)將模板轉(zhuǎn)換為render函數(shù)枝嘶,而render函數(shù)調(diào)用后將得到虛擬dom。

編譯的過程分兩步:

將模板字符串轉(zhuǎn)換成為AST

將AST轉(zhuǎn)換為render函數(shù)

如果使用傳統(tǒng)的引入方式哑诊,則編譯時間發(fā)生在組件第一次加載時群扶,這稱之為運行時編譯。

如果是在vue-cli的默認(rèn)配置下镀裤,編譯發(fā)生在打包時竞阐,這稱之為模板預(yù)編譯。

編譯是一個極其耗費性能的操作淹禾,預(yù)編譯可以有效的提高運行時的性能,而且茴扁,由于運行的時候已不需要編譯铃岔,vue-cli在打包時會排除掉vue中的compile模塊,以減少打包體積

模板的存在峭火,僅僅是為了讓開發(fā)人員更加方便的書寫界面代碼

vue最終運行的時候毁习,最終需要的是render函數(shù),而不是模板卖丸,因此纺且,模板中的各種語法,在虛擬dom中都是不存在的稍浆,它們都會變成虛擬dom的配置

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末载碌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子衅枫,更是在濱河造成了極大的恐慌嫁艇,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弦撩,死亡現(xiàn)場離奇詭異步咪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)益楼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門猾漫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人感凤,你說我怎么就攤上這事悯周。” “怎么了陪竿?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵队橙,是天一觀的道長。 經(jīng)常有香客問我,道長捐康,這世上最難降的妖魔是什么仇矾? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮解总,結(jié)果婚禮上贮匕,老公的妹妹穿的比我還像新娘。我一直安慰自己花枫,他們只是感情好刻盐,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著劳翰,像睡著了一般敦锌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上佳簸,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天乙墙,我揣著相機(jī)與錄音,去河邊找鬼生均。 笑死听想,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的马胧。 我是一名探鬼主播汉买,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼佩脊!你這毒婦竟也來了蛙粘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤威彰,失蹤者是張志新(化名)和其女友劉穎组题,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抱冷,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡崔列,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了旺遮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赵讯。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖耿眉,靈堂內(nèi)的尸體忽然破棺而出边翼,到底是詐尸還是另有隱情,我是刑警寧澤鸣剪,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布组底,位于F島的核電站丈积,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏债鸡。R本人自食惡果不足惜江滨,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望厌均。 院中可真熱鬧唬滑,春花似錦、人聲如沸棺弊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽模她。三九已至稻艰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侈净,已是汗流浹背尊勿。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留用狱,地道東北人运怖。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓拼弃,卻偏偏與公主長得像夏伊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吻氧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容