一,瀏覽器的主要功能html
就是向服務器發出請求,在瀏覽器窗口中展現您選擇的網絡資源,資源通常是指 HTML 文檔,也能夠是 PDF、圖片或其餘的類型。資源的位置由用戶使用 URI(統一資源標示符)指定。html5
二,瀏覽器的組件web
三,呈現引擎 數據庫
/*渲染引擎主流程*/ 後端
webkit 主流程瀏覽器
Mozilla 的 Gecko 呈現引擎主流程 服務器
雖然 WebKit 和 Gecko 使用的術語略有不一樣,但總體流程是基本相同的。Gecko 將視覺格式化元素組成的樹稱爲「框架樹」。每一個元素都是一個框架。WebKit 使用的術語是「呈現樹」,它由「呈現對象」組成。對於元素的放置,WebKit 使用的術語是「佈局」,而 Gecko 稱之爲「重排」。對於鏈接 DOM 節點和可視化信息從而建立呈現樹的過程,WebKit 使用的術語是「附加」。有一個細微的非語義差異,就是 Gecko 在 HTML 與 DOM 樹之間還有一個稱爲「內容槽」的層,用於生成 DOM 元素。網絡
本文所討論的瀏覽器——Firefox、Chrome和Safari是基於兩種渲染引擎構建的,Firefox使用Geoko——Mozilla自主研發的渲染引擎,Safari和Chrome都使用webkit。框架
瀏覽器渲染引擎工做流程都差很少佈局
呈現引擎一開始會從網絡層獲取請求文檔的內容,內容的大小通常限制在 8k個塊之內
解析 HTML 文檔,逐個轉化成DOM樹。同時解析外部 CSS 文件以及樣式元素生成CSSOM樹。HTML 中這些帶有視覺指令的樣式信息將用於建立另外一個樹結構:呈現樹(Render樹)
呈現樹包含多個帶有視覺屬性(如顏色和尺寸)的矩形。這些矩形的排列順序就是它們將在屏幕上顯示的順序。
呈現樹構建完畢以後,進入「佈局」,爲每一個節點分配一個應出如今屏幕上的確切座標。遍歷呈現樹,由用戶界面後端層將每一個節點繪製出來。
這是一個漸進的過程。沒必要整個 HTML 文檔解析完畢以後,就會開始構建呈現樹和設置佈局。在不斷接收和處理來自網絡的其他內容的同時,呈現引擎會將部份內容解析並顯示出來。
Render樹是DOM樹和CSSOM樹構建完畢纔開始構建的嗎?這三個過程在實際進行的時候又不是徹底獨立,而是會有交叉。會形成一邊加載,一遍解析,一遍渲染的工做現象。
簡而言之呢
這裏面每一步都須要大量的工做,在傳統的開發模式中,原生JS或JQ操做DOM時,瀏覽器會從構建DOM樹,從頭至尾執行一遍。
因此就有了虛擬DOM,將在下一篇文章總結虛擬DOM