摘要:在這個(gè)過(guò)程中,中可能會(huì)通過(guò)去引入其他相應(yīng)的資源,比如的資源,這個(gè)時(shí)候?yàn)g覽器可能就會(huì)兵法的向服務(wù)器去請(qǐng)求這個(gè)相關(guān)的靜態(tài)資源,請(qǐng)求回來(lái)后通過(guò)解析器對(duì)其進(jìn)行解析,從而生成一個(gè)樹(shù),去和樹(shù)進(jìn)行結(jié)合生成一個(gè),進(jìn)一步的進(jìn)行一個(gè)布局,最終進(jìn)行繪制。
網(wǎng)頁(yè)內(nèi)容的組成
doctype: 提供瀏覽器的html版本信息
head : html頭部
meta: 元數(shù)據(jù)信息
charset: 聲明當(dāng)前文檔所實(shí)用的字符編碼
http-equiv: 客戶端行為,如渲染模式,緩存等
name[keywords]: 搜索引擎關(guān)鍵字
name[description]: 搜索引擎描述
name[viewport]: 瀏覽器視口設(shè)置
link
script: 需要在body前完成加載或運(yùn)行的腳本
body: html實(shí)體
script: 需要在body解析時(shí)加載或運(yùn)行的腳本
渲染需要做的工作通過(guò)上面的圖可以知道,網(wǎng)頁(yè)內(nèi)容首先會(huì)被html解析器解析成一個(gè)DOM樹(shù),實(shí)際上html是我們最先會(huì)通過(guò)網(wǎng)址向服務(wù)器請(qǐng)求回來(lái)的,請(qǐng)求回來(lái)的html從字節(jié)流轉(zhuǎn)成字符流,我們的瀏覽器實(shí)際拿到的就是一個(gè)字符流,然后瀏覽器通過(guò)詞法分析對(duì)輸入字節(jié)流進(jìn)行逐字掃描,根據(jù)構(gòu)詞規(guī)則識(shí)別單詞和符號(hào),分詞,生成相應(yīng)的token,之后會(huì)將這些token通過(guò)nextToken()添加到dom樹(shù)中去。所以html解析是從上到下對(duì)文檔進(jìn)行一個(gè)此法分析,所以它首先遇到html標(biāo)簽的時(shí)候會(huì)對(duì)html生成一個(gè)token,這個(gè)token會(huì)被標(biāo)記成一個(gè)startTag的類(lèi)型,對(duì)于header的花也會(huì)被標(biāo)記成startTag,但是它會(huì)聲稱(chēng)為headerToken,就是說(shuō)對(duì)于不同類(lèi)型的html標(biāo)簽格式,在詞法分析的過(guò)程中,會(huì)解析成一個(gè)相應(yīng)的對(duì)象,然后token類(lèi)型會(huì)被瀏覽器解析,最后會(huì)將token類(lèi)型append到dom樹(shù)上去。
在這個(gè)過(guò)程中,html中可能會(huì)通過(guò)link去引入其他相應(yīng)的資源,比如css的資源,這個(gè)時(shí)候?yàn)g覽器可能就會(huì)兵法的向服務(wù)器去請(qǐng)求這個(gè)相關(guān)的靜態(tài)資源,請(qǐng)求回來(lái)后通過(guò)css解析器對(duì)其進(jìn)行解析,從而生成一個(gè)css樹(shù),去和dom樹(shù)進(jìn)行結(jié)合生成一個(gè)render Tree,進(jìn)一步的進(jìn)行一個(gè)布局,最終進(jìn)行繪制。
加載css的加載不會(huì)阻塞dom解析,但是會(huì)阻塞頁(yè)面渲染,所以一般把css加載放在頭部
css會(huì)去阻塞js的執(zhí)行,就是說(shuō)css資源在加載完之前,js的執(zhí)行會(huì)被阻塞,但是css不會(huì)阻塞js腳本的加載
js會(huì)去阻塞頁(yè)面dom的解析
js不阻塞資源的加載
js順序執(zhí)行,阻塞后續(xù)js邏輯的執(zhí)行
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/53326.html
摘要:原文鏈接瀏覽器渲染那些事之瀏覽器內(nèi)核渲染引擎在各個(gè)瀏覽器廠商你追我趕的形勢(shì)下,截止今日,產(chǎn)生了很多不同的瀏覽器,各個(gè)瀏覽器本質(zhì)大同小異,核心部分基本相似,由渲染引擎和引擎組成。 原文鏈接 瀏覽器渲染那些事之 Reflow、Repaint 瀏覽器內(nèi)核(渲染引擎) 在各個(gè)瀏覽器廠商你追我趕的形勢(shì)下,截止今日,產(chǎn)生了很多不同的瀏覽器,各個(gè)瀏覽器本質(zhì)大同小異,核心部分基本相似,由渲染引擎和 J...
摘要:前言瀏覽器的內(nèi)核是指支持瀏覽器運(yùn)行的最核心的程序,分為兩個(gè)部分的,一是渲染引擎,另一個(gè)是引擎。渲染引擎在不同的瀏覽器中也不是都相同的。接下來(lái)就是瀏覽器的渲染過(guò)程。布局完成后,瀏覽器會(huì)立即發(fā)出和事件,將渲染樹(shù)轉(zhuǎn)換成屏幕上的像素。 前言 瀏覽器的內(nèi)核是指支持瀏覽器運(yùn)行的最核心的程序,分為兩個(gè)部分的,一是渲染引擎,另一個(gè)是JS引擎。渲染引擎在不同的瀏覽器中也不是都相同的。目前市面上常見(jiàn)的瀏覽...
摘要:前言瀏覽器的內(nèi)核是指支持瀏覽器運(yùn)行的最核心的程序,分為兩個(gè)部分的,一是渲染引擎,另一個(gè)是引擎。渲染引擎在不同的瀏覽器中也不是都相同的。接下來(lái)就是瀏覽器的渲染過(guò)程。布局完成后,瀏覽器會(huì)立即發(fā)出和事件,將渲染樹(shù)轉(zhuǎn)換成屏幕上的像素。 前言 瀏覽器的內(nèi)核是指支持瀏覽器運(yùn)行的最核心的程序,分為兩個(gè)部分的,一是渲染引擎,另一個(gè)是JS引擎。渲染引擎在不同的瀏覽器中也不是都相同的。目前市面上常見(jiàn)的瀏覽...
摘要:由一道面試題引發(fā)的思考從用戶輸入瀏覽器輸入到頁(yè)面最后呈現(xiàn)有哪些過(guò)程一道很常規(guī)的題目,考的是基本網(wǎng)絡(luò)原理,和瀏覽器加載,過(guò)程。所以抽出時(shí)間研究下瀏覽器渲染頁(yè)面的過(guò)程。 由一道面試題引發(fā)的思考: 從用戶輸入瀏覽器輸入url到頁(yè)面最后呈現(xiàn) 有哪些過(guò)程?一道很常規(guī)的題目,考的是基本網(wǎng)絡(luò)原理,和瀏覽器加載css,js過(guò)程。 答案大致如下: 用戶輸入U(xiǎn)RL地址 瀏覽器解析URL解析出主機(jī)名 瀏覽...
摘要:響應(yīng)由三個(gè)部分組成,分別是狀態(tài)行消息報(bào)頭響應(yīng)正文。詳情參考小汪之前寫(xiě)的文章瀏覽器內(nèi)核之解釋器和模型解釋解釋過(guò)程是指從字符串經(jīng)過(guò)解釋器處理后變成渲染引擎內(nèi)部規(guī)則的表示過(guò)程。 showImg(https://segmentfault.com/img/remote/1460000016404846); 前言 小汪最近在看【W(wǎng)ebKit 技術(shù)內(nèi)幕】一書(shū),說(shuō)實(shí)話,這本書(shū)寫(xiě)的太官方了,不通俗易懂。...
閱讀 935·2023-04-26 00:37
閱讀 802·2021-11-24 09:39
閱讀 2235·2021-11-23 09:51
閱讀 3978·2021-11-22 15:24
閱讀 804·2021-10-19 11:46
閱讀 1918·2019-08-30 13:53
閱讀 2510·2019-08-29 17:28
閱讀 1402·2019-08-29 14:11