「一」瀏覽器的主要結構【必看!】

瀏覽器主要結構

目前,常用的瀏覽器主要有:Chrome、IE(Edge)、Safari、Firefox等。不同的瀏覽器在結構方面雖然有所差異,但是整體的設計理念是相似的。因此,可以抽象得到如下圖所示的參考結構:


組成

1. 用戶界面(User Interface)

包括地址欄、後退/前進按鈕、書籤目錄等,也就是看到的除了顯示所請求頁面的主窗口之外的其他部分

2. 瀏覽器引擎(Browser Engine)

用來查詢及操作渲染引擎的接口
瀏覽器引擎可以加載一個給定的URI,並支持諸如:前進/後退/重新加載等瀏覽操作。
瀏覽器引擎提供查看瀏覽會話的各個方面的掛鉤,例如:當前頁面加載進度、JavaScript alert。
瀏覽器引擎還允許查詢/修改渲染引擎設置。

3. 渲染引擎 (Rendering Engine)

渲染引擎能夠顯示HTML和XML文檔,可選擇CSS樣式,以及嵌入式內容(如圖片)。
渲染引擎能夠準確計算頁面佈局,可使用“迴流”算法逐步調整頁面元素的位置。
渲染引擎內部包含HTML解析器。

4. 網絡(Networking)

網絡系統實現HTTP和FTP等文件傳輸協議。
網絡系統可以在不同的字符集之間進行轉換,爲文件解析MIME媒體類型。
網絡系統可以實現最近檢索資源的緩存功能

5.XML解析器(XML Parser)

XML解析器可以將XML文檔解析成文檔對象模型(Document Object Model,DOM)樹。
XML解析器是瀏覽器架構中複用最多的子系統之一,幾乎所有的瀏覽器實現都利用現有的XML解析器,而不是從頭開始創建自己的XML解析器。

6. JS解釋器(JavaScript Interpreter)

JavaScript解釋器能夠解釋並執行嵌入在網頁中的JavaScript(又稱ECMAScript)代碼。

7.顯示後端 (Display Backend)

用來繪製類似組合選擇框及對話框等基本組件,具有不特定於某個平臺的通用接口,底層使用操作系統的用戶接口。

8. 數據持久層 (Data Persistence)

數據持久層將與瀏覽會話相關聯的各種數據存儲在硬盤上。
這些數據可能是諸如:書籤、工具欄設置等這樣的高級數據,也可能是諸如:Cookie,安全證書、緩存等這樣的低級數據。

內核

瀏覽器內核分成兩部分:渲染引擎和js引擎,由於js引擎越來越獨立,內核就傾向於只指渲染引擎,負責請求網絡頁面資源加以解析排版並呈現給用戶

默認情況下,渲染引擎可以顯示html、xml文檔及圖片,它也可以藉助插件顯示其他類型數據,例如使用PDF閱讀器插件,可以顯示PDF格式

【渲染引擎】
瀏覽器 渲染引擎
firefox gecko
IE、Edge Trident
chrome\safari\opera webkit(13年chrome和opera開始使用Blink引擎)
QQ瀏覽器和微信內核 X5(16年開始使用Blink引擎)
UC U3引擎
【js引擎】
瀏覽器 js引擎
chrome V8引擎
firefox monkey系列
Opera Carakan引擎
safari SquirrelFish系列引擎
老版本IE Jscript引擎 (IE9之後使用Chakra引擎)

上面的內容只是簡單介紹下瀏覽器的主要結構,通過圖可以看出重頭戲在渲染引擎(rendering engine)中,下面的幾篇文章都會圍繞這上面的結構圖展開論述,歡迎大家持續關注~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章