一個完整的瀏覽器包含瀏覽器內核和瀏覽器的外殼,瀏覽器內核又可以分為兩部分:渲染引擎和js引擎,由于js引擎越來越獨立,內核就傾向于只指渲染引擎。
瀏覽器的構成:一般由7個模塊組成:User Interface(用戶界面)、Browser engine(瀏覽器引擎)、Rendering engine(渲染引擎)、Networking(網絡)、JAVAScript Interpreter(js解釋器)、UI Backend(UI后端)、Date Persistence(數據持久化存儲)
用戶界面:包括地址欄、后退/前進按鈕、書簽目錄等,也就是所看到的除了頁面顯示窗口之外的其他部分。
瀏覽器引擎:可以在用戶面和渲染引擎之間傳送指令或在客戶端本地緩存中讀寫數據等,是瀏覽器中各個部分之間相互通信的核心。
渲染引擎:解析DOM文檔和css規則并將內容排版到瀏覽器中顯示有樣式的界面,也有人稱之為排版引擎,我們常說的瀏覽器內核主要指的就是渲染引擎。
網絡:用來完成網絡調用或資源下載的模塊。
UI后端:用來繪制基本的瀏覽器窗口內控件,如輸入框、按鈕、單選按鈕等,根據瀏覽器不同繪制的視覺效果也不同,但功能都是一樣的。
JS解釋器:用來解釋執行JS腳本的模塊,如V8引擎,JavaScriptCore
數據存儲:瀏覽器在硬盤中保存cookie、localStorage等各種數據,可通過瀏覽器引擎提供的API進行調用。
主流瀏覽器的內核
Trident(IE內核)
Trident內核代表產品Internet Explorer,是微軟開發的一種排版引擎。
Gecko(Firefox 火狐)
Gecko內核代表作品Mozilla FirefoxGecko是一套開放源代碼的,以C++編寫的網頁排版引擎。Gecko是最流行的排版引擎之一,僅次于Trident。
Webkit(Safari)
蘋果公司自己的內核,也是Safari瀏覽器的內核。Webkit內核代表作品Safari 、Chromewebkit是一個開源項目,包含了來自KDE項目和蘋果公司的一些組件,
主要用于mac IOS系統,特點在于源碼結構清晰,渲染速度極快。缺點是對網頁代碼的兼容性不高,導致一些編寫不標準的網頁無法正常顯示,主要代表作品有Safari和google。
Presto(Opera)
Presto內核代表作品OperaPresto是由OperaSoftware開發的瀏覽器排版引擎,供Opera7.0及以上使用,它取代了舊版Opera4至6版本使用的Elektra排版引擎,包括加入動態功能,
例如網頁或其部分可隨著DOM及Script語法的事件而重新排版。
Blink(Chrome)
有Google和Opera Software挨罰的瀏覽器排版引擎,2013年4月發布,現在Chrome內核是Blink。Blink其實是webkit的分支,大部分國產瀏覽器最新版都采用Blink內核。
移動端的瀏覽器內核主要說的是系統內置瀏覽器的內核。
目前移動設備瀏覽器上常用的內核有Webkit、Blink、Trident、Gecko,其中蘋果iOS平臺主要是Webkit,Android4.4之前Android系統瀏覽器的內核是Webkit,Android4.4之后使用Blink,windows Phone8系統瀏覽器內核是Trident。