網(wǎng)頁(yè)渲染的基本過(guò)程。瀏覽器的主要作用是將用戶輸入的網(wǎng)站“URL”轉(zhuǎn)變成可視化的圖像。這其中包含兩個(gè)過(guò)程,一是網(wǎng)頁(yè)加載過(guò)程,從“URL”到構(gòu)建DOM(Document Object Model,文檔對(duì)象模型)樹(shù);二是網(wǎng)頁(yè)渲染過(guò)程,從DOM樹(shù)到生成可視化圖像,即我們看到的頁(yè)面效果。
網(wǎng)頁(yè)渲染的過(guò)程其實(shí)就是將URL對(duì)應(yīng)的各種資源,通過(guò)瀏覽器渲染引擎的解析,輸出可視化的圖像。根據(jù)數(shù)據(jù)的流向,瀏覽器的渲染過(guò)程可以分成三個(gè)階段(以WebKit內(nèi)核瀏覽器為例):從網(wǎng)頁(yè)的URL到構(gòu)建完DOM樹(shù);從DOM樹(shù)到構(gòu)建完WebKit的繪圖上下文;從繪圖上下文到生成最終圖像。
瀏覽器渲染引擎主要包括HTML解釋器、CSS解釋器、布局和JavaScript(以下簡(jiǎn)稱JS)解釋器。其中,HTML解釋器主要作用是將HTML文本解釋成DOM樹(shù);CSS解釋器作用是為DOM中各元素對(duì)象計(jì)算出樣式信息;布局則是指在DOM樹(shù)創(chuàng)建之后形成一個(gè)內(nèi)部表示模型,這個(gè)模型將HTML元素與CSS樣式結(jié)合起來(lái),計(jì)算出元素的具體大小和位置等布局信息;JS解釋器能夠解釋JS代碼并通過(guò)DOM接口和CSSOM接口來(lái)修改網(wǎng)頁(yè)內(nèi)容和樣式信息,從而改變渲染的結(jié)果。隨著JS解釋器越來(lái)越重要,JS解釋器逐漸脫離出來(lái)成為獨(dú)立的JS引擎。