瀏覽器是不是相當於 HTML、CSS 等語言的一個解釋器?
瀉藥
應該說瀏覽器涵蓋了HTML,CSS等這些語言的解釋器
它們僅僅是瀏覽器諸多組成中的一小部分
這些解釋器是為布局提供數據執行腳本 等操作準備的
其上還有布局引擎
腳本綁定、繪製器等內容這些合起來是瀏覽器核心模塊而瀏覽器除核心模塊外還有許多周邊內容比如包裹核心 模塊的 RenderView配合 RenderView 執行 的 RanderProcess 作為 RanderProcess 映射的 RanderProcessHost為 RanderProcessHost 提供數據的 IO ThreadIO Thread 還包含 File IO、DB IO、HTTP 等等
為了相互通信的 IPC為了遠程通信的 WS為了調試的 Devtools為了記錄用戶數據的 userProfile為了繪製用戶操作頁面的 WTF(系統相關)等等全部都加起來才能叫做瀏覽器不請自來,曾經讀過《webkit技術內幕》,下面是在團隊內部做分享時留下的幾張圖片(都來自於《webkit技術內幕》)。現在貼出來供大家參考,應該可以更好的了解瀏覽器的相關知識。
1.基於Blink的Chromium(Chromium相當於Chrome的工程版或稱實驗版,新功能會率先在Chromium上實現,待驗證後才會應用在Chrome上)瀏覽器結構:
瀏覽器有三塊,html和css的編譯器,js的編譯器,還有內置的伺服器。
瀏覽器,我們可以認為它的功能是將伺服器端的內容呈現到我們的客戶端。其主要的功能有:為用戶代理髮送http請求,根據返回的內容生成DOM樹、呈現樹,並將其繪製出來,然後進入事件循環等待用戶輸入。
發送接收http報文是瀏覽器的網路介面模塊,可以實現資源請求和傳輸,而資源的傳輸過程在前端開發中是尤為重要的。其制約因素多為http協議、tcp協議等協議層面,所以http2.0的到來會為前端開發帶來極大的性能提升。
瀏覽器中一個非常重要的功能模塊就是渲染引擎,我們常提的內核一般就可以認為是這個。渲染引擎中比較重要的就是幾個步驟就是:將html渲染成dom樹(js介面,通過js過去的dom就是它)、解析css文件、為相應的dom節點應用css樣式生成呈現樹、為呈現樹應用布局(計算呈現樹節點的大小以及擺放位置)、將呈現樹繪製到頁面上。其中每一部分的內容都很深入,比如解析出的css樣式如何保存等都是很難的問題,其中各個步驟的具體實現對於不同的瀏覽器來說有所不同,但是差不多都是這些步驟。
上面的是內容與樣式,再稍微說說行為,既js。js解析器也是瀏覽器的一個重要模塊,比如我們常說的chrome的v8就是js解析器。
所以,瀏覽器可以大致等於:渲染引擎(html解析器、css解析器、樣式計算、布局、繪製)+js解析器+其他(瀏覽器UI及功能、持久層等)。
鏈接送上(chrome開發參與人員,大牛寫的,很全面):http://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/#The_browsers_we_will_talk_about
答主目前正在苦逼找工作期間,有些地方可能說的不夠精確,還請多多指教。另外,歡迎光臨我的個人網站:暗流[http://peytonzhao88.cn]瀏覽器的主要功能
瀏覽器的主要功能就是向伺服器發出請求,在瀏覽器窗口中展示您選擇的網路資源。這裡所說的資源一般是指 HTML 文檔,也可以是 PDF、圖片或其他的類型。資源的位置由用戶使用 URI(統一資源標示符)指定。
瀏覽器解釋並顯示 HTML 文件的方式是在 HTML 和 CSS 規範中指定的。這些規範由網路標準化組織 W3C(萬維網聯盟)進行維護。
瀏覽器的結構
- 用戶界面 - 包括地址欄、前進/後退按鈕、書籤菜單等。除了瀏覽器主窗口顯示的您請求的頁面外,其他顯示的各個部分都屬於用戶界面。
- 瀏覽器引擎 - 在用戶界面和呈現引擎之間傳送指令。
- 呈現引擎 - 負責顯示請求的內容。如果請求的內容是 HTML,它就負責解析 HTML 和 CSS 內容,並將解析後的內容顯示在屏幕上。
- 網路 - 用於網路調用,比如 HTTP 請求。其介面與平台無關,並為所有平台提供底層實現。
- 用戶界面後端 - 用於繪製基本的窗口小部件,比如組合框和窗口。其公開了與平台無關的通用介面,而在底層使用操作系統的用戶界面方法。
- JavaScript 解釋器。用於解析和執行 JavaScript 代碼。
- 數據存儲。這是持久層。瀏覽器需要在硬碟上保存各種數據,例如 Cookie。新的 HTML 規範 (HTML5) 定義了「網路資料庫」,這是一個完整(但是輕便)的瀏覽器內資料庫。
CSS解釋過程,是從 CSS 字元串經過 CSS 解釋器(CSSParser、CSSGrammer)處理後,變成渲染引擎的內部樣式規則表示的過程。樣式規則是解釋器的輸出結構,是樣式匹配的輸入數據。
具體過程:WebKit 在渲染元素時,CSS 解釋器獲取樣式信息,返回匹配好的結果樣式信息。每個元素可能需要匹配不同來源的規則,依次是用戶代理(瀏覽器)規則集合、用戶規則集合和HTML頁面中包含的自定義規則集合。三者匹配方式類似。
對於每個規則集合,先查找 ID 規則,檢查有無匹配的規則,然後依次檢查類型規則、標籤規則等。匹配好的規則,保存到匹配結果中。WebKit 對這些規則進行排序。對於元素需要的樣式屬性,WebKit 選擇從高優先順序規則中選取,並將樣式屬性值返回。http://sep9.cn/h4k5we
瀏覽器是一個操作系統。有許可權還可以簡單操作你的電腦。
HTML parser、CSS render、JavaScript engine
比解釋更重要的是渲染
推薦閱讀:
※把瀏覽器的 rendering engine 翻譯成「渲染引擎」是正確的嗎?
※"去你大爺的內置瀏覽器"是幹什麼的?
※為什麼國外網站通常從原網頁跳轉,而中國的網站更傾向於打開一個新網頁?