1.輸入一個(gè)URL到頁(yè)面過(guò)程中發(fā)生了什么缎岗?
1.首先在瀏覽器中輸入U(xiǎn)RL
2.查找緩存模暗,首先先查看瀏覽器緩存-系統(tǒng)緩存-路由緩存這個(gè)順序中查找是否有該地址沟绪,如果有則顯示頁(yè)面內(nèi)容氧吐,沒(méi)有則進(jìn)行下一步
3.DNS域名解析:瀏覽器向DNS服務(wù)器發(fā)起請(qǐng)求,解析該URL種域名對(duì)應(yīng)的IP地址(DNS服務(wù)器基于UDP怀樟,因此會(huì)用到UDP協(xié)議)
4.建立TCP連接:解析出IP地址后功偿,根據(jù)IP地址和默認(rèn)80端口,和服務(wù)器建立TCP連接
5.發(fā)起HTTP請(qǐng)求:瀏覽器發(fā)起讀取文件的HTTP請(qǐng)求往堡,該請(qǐng)求報(bào)文作為T(mén)CP三次握手的第三次數(shù)據(jù)發(fā)送給服務(wù)器
6.服務(wù)器響應(yīng)請(qǐng)求并返回結(jié)果:服務(wù)器對(duì)瀏覽器請(qǐng)求做出響應(yīng)械荷,并把對(duì)應(yīng)的html文件發(fā)送給瀏覽器
7.關(guān)閉TCP連接:通過(guò)四次揮手釋放TCP連接
8.瀏覽器渲染:瀏覽器解析HTML內(nèi)容并渲染出來(lái),瀏覽器接收到數(shù)據(jù)包后的解析流程為
- 構(gòu)建DOM樹(shù):詞法分析然后解析成DOM樹(shù)虑灰,由dom元素及屬性節(jié)點(diǎn)組成吨瞎,樹(shù)的根是document對(duì)象
- 構(gòu)建css規(guī)則樹(shù):生成css規(guī)則樹(shù)
- 構(gòu)建render樹(shù):瀏覽器將DOM和CSSOM結(jié)合,并構(gòu)建出渲染樹(shù)
*布局:計(jì)算出每個(gè)節(jié)點(diǎn)在屏幕中的位置 - 繪制:遍歷render樹(shù)穆咐,并使用UI后端層繪制每個(gè)節(jié)點(diǎn)
2.vue生命周期
create階段:vue實(shí)例被創(chuàng)建 beforeCreate:創(chuàng)建前颤诀,此時(shí)data和methods中的數(shù)據(jù)都還沒(méi)有初始化;created:創(chuàng)建完畢对湃,data中有值崖叫,未掛載
mount階段:vue實(shí)例被掛載到真實(shí)DOM節(jié)點(diǎn) beforeMount:可以發(fā)起服務(wù)器請(qǐng)求;mounted:此時(shí)可以操作DOM
update階段:當(dāng)vue實(shí)例里面的data數(shù)據(jù)發(fā)生變化時(shí)拍柒,觸發(fā)組件的重新渲染(beforeUpdate updated)
destory階段:vue實(shí)例被銷(xiāo)毀 beforeDestroy:實(shí)例被銷(xiāo)毀前 destroyed
3.vue2.0和vue3.0有什么區(qū)別
1.響應(yīng)式系統(tǒng)的重新配置心傀,雙向數(shù)據(jù)綁定的原理不同,使用es6的ProxyAPI(代理)替換對(duì)象.define屬性斤儿。使用代理優(yōu)勢(shì)
- 可直接監(jiān)控列類(lèi)型的數(shù)據(jù)變化
*監(jiān)聽(tīng)的對(duì)象是對(duì)象本身剧包,不需要像Object.defineProperty那樣遍歷每個(gè)屬性恐锦,有一定的性能提升 - 省去for循環(huán)往果,閉包等內(nèi)容來(lái)提升效率
- 直接添加對(duì)象屬性/刪除
- 直接監(jiān)聽(tīng)數(shù)組,不需要再去單獨(dú)對(duì)數(shù)組做特異性操作
2.支持碎片(多個(gè)根節(jié)點(diǎn))
vue2不支持碎片一铅,而vue3支持