瀏覽器組成

?首先瀏覽器是一個軟件,就和qq诅福,wechat匾委,沒什么差別,只是功能不一樣氓润。qq赂乐,wechat是社交類,而瀏覽器就是專門用來訪問和瀏覽萬維網(wǎng)頁面的客戶端軟件咖气。

瀏覽器結(jié)構(gòu):

1. User Interface(用戶界面):

包括工具欄挨措、地址欄、前進/后退按鈕崩溪、書簽菜單运嗜、可視化頁面加載進度、智能下載處理悯舟、首選項担租、打印等。除了瀏覽器主窗口顯示請求的頁面之外抵怎,其他顯示的部分都屬于用戶界面奋救。

2. Browser engine(瀏覽器引擎):

瀏覽器引擎是一個可嵌入的組件,其為渲染引擎提供高級接口反惕。

瀏覽器引擎可以加載一個給定的URI尝艘,并支持諸如:前進/后退/重新加載等瀏覽操作。

瀏覽器引擎提供查看瀏覽會話的各個方面的掛鉤姿染,例如:當前頁面加載進度背亥、JavaScript alert。

瀏覽器引擎還允許查詢/修改渲染引擎設(shè)置悬赏。

3.?Rendering Engine(渲染引擎)

渲染引擎為指定的URI生成可視化的表示狡汉。

渲染引擎能夠顯示HTML和XML文檔,可選擇CSS樣式闽颇,以及嵌入式內(nèi)容(如圖片)盾戴。

渲染引擎能夠準確計算頁面布局,可使用“回流”算法逐步調(diào)整頁面元素的位置兵多。

渲染引擎內(nèi)部包含HTML解析器尖啡。

Chrome為每個Tab分配了各自的渲染引擎實例橄仆,每個Tab就是一個獨立的進程。

4. Networking(網(wǎng)絡(luò))

網(wǎng)絡(luò)系統(tǒng)實現(xiàn)HTTP和FTP等文件傳輸協(xié)議衅斩。 網(wǎng)絡(luò)系統(tǒng)可以在不同的字符集之間進行轉(zhuǎn)換盆顾,為文件解析MIME媒體類型。 網(wǎng)絡(luò)系統(tǒng)可以實現(xiàn)最近檢索資源的緩存功能(前端小伙伴了解下畏梆,方便面試)椎扬。

5. JavaScript Interpreter(JS解釋器)

JavaScript解釋器能夠解釋并執(zhí)行嵌入在網(wǎng)頁中的JavaScript(又稱ECMAScript)代碼。 為了安全起見具温,瀏覽器引擎或渲染引擎可能會禁用某些JavaScript功能蚕涤,如彈出窗口的打開。

6. XML Parser(XML解析器)

XML解析器可以將XML文檔解析成文檔對象模型(Document Object Model铣猩,DOM)樹揖铜。 XML解析器是瀏覽器架構(gòu)中復(fù)用最多的子系統(tǒng)之一,幾乎所有的瀏覽器實現(xiàn)都利用現(xiàn)有的XML解析器达皿,而不是從頭開始創(chuàng)建自己的XML解析器

功能相似的HTML解析器和XML解析器為什么前者劃分在渲染引擎中天吓,后者作為獨立的系統(tǒng)?

XML解析器對于系統(tǒng)來說峦椰,其功能并不是關(guān)鍵性的龄寞,但是從復(fù)用角度來說,XML解析器是一個通用的汤功,可重用的組件物邑,具有標準的,定義明確的接口滔金。相比之下色解,HTML解析器通常與渲染引擎緊耦合。

7. UI Backend(顯示后端)

用來繪制類似組合選擇框及對話框等基本組件餐茵,具有不特定于某個平臺的通用接口科阎,底層使用操作系統(tǒng)的用戶接口。

8.?Data Persistence(數(shù)據(jù)持久層)

數(shù)據(jù)持久層將與瀏覽會話相關(guān)聯(lián)的各種數(shù)據(jù)存儲在硬盤上忿族。 這些數(shù)據(jù)可能是諸如:書簽锣笨、工具欄設(shè)置等這樣的高級數(shù)據(jù),也可能是諸如:Cookie道批,安全證書错英、緩存等這樣的低級數(shù)據(jù)(前端小伙伴了解下,面試用來吹)屹徘。

瀏覽器內(nèi)核:

瀏覽器內(nèi)核負責(zé)取得網(wǎng)頁的內(nèi)容(HTML走趋、XML、圖像等等)噪伊、整理訊息(例如加入 CSS 等)簿煌,以及計算網(wǎng)頁的顯示方式,然后會輸出至顯示器或打印機鉴吹。

瀏覽器的內(nèi)核的不同對于網(wǎng)頁的語法解釋會有不同姨伟,所以渲染的效果也不相同。所有網(wǎng)頁瀏覽器豆励、電子郵件客戶端以及其它需要編輯夺荒、顯示網(wǎng)絡(luò)內(nèi)容的應(yīng)用程序都需要內(nèi)核。

內(nèi)核分為兩個部分:渲染引擎和js引擎良蒸,由于js引擎越來越獨立技扼,內(nèi)核就傾向于只指渲染引擎

1. 渲染引擎

負責(zé)請求網(wǎng)絡(luò)頁面資源加以解析排版并呈現(xiàn)給用戶,渲染引擎可以顯示html嫩痰、xml文檔及圖片剿吻,它也可以借助插件顯示其他類型數(shù)據(jù),例如使用PDF閱讀器插件串纺,可以顯示PDF格式丽旅。

2. js引擎

JS 引擎則是解析 Javascript 語言,執(zhí)行 javascript 語言來實現(xiàn)網(wǎng)頁的動態(tài)效果纺棺。

3. 當前主流內(nèi)核

Trident ([‘tra?d(?)nt]):普遍稱作 “IE內(nèi)核”

該內(nèi)核程序在 1997 年的 IE4 中首次被采用榄笙,是微軟在 Mosaic(”馬賽克”,這是人類歷史上第一個瀏覽器祷蝌,從此網(wǎng)頁可以在圖形界面的窗口瀏覽) 代碼的基礎(chǔ)之上修改而來的茅撞,并沿用到 IE11,也被普遍稱作 “IE內(nèi)核”巨朦。

IE 從版本 11 開始乡翅,初步支持 WebGL 技術(shù)。IE8 的 JavaScript 引擎是 Jscript罪郊,IE9 開始用 Chakra蠕蚜,這兩個版本區(qū)別很大,Chakra 無論是速度和標準化方面都很出色悔橄。

Window10 發(fā)布后靶累,IE 將其內(nèi)置瀏覽器命名為 Edge,Edge 最顯著的特點就是新內(nèi)核 EdgeHTML癣疟。

Gecko ([‘gek??]):Firefox 內(nèi)核

Gecko 內(nèi)核的瀏覽器Firefox (火狐) 用戶最多挣柬,所以有時也會被稱為 Firefox 內(nèi)核,此外 Gecko 也是一個跨平臺內(nèi)核睛挚,可以在Windows邪蛔、 BSD、Linux 和 Mac OS X 中使用扎狱。

Webkit:

ebkit內(nèi)核 可以說是以硬件盈利為主的蘋果公司給軟件行業(yè)的最大貢獻之一侧到。隨后勃教,2008 年谷歌公司發(fā)布 chrome 瀏覽器,采用的 chromium 內(nèi)核便 fork 了 Webkit匠抗。

Chromium/Blink:

2008 年故源,谷歌公司發(fā)布了 chrome 瀏覽器,瀏覽器使用的內(nèi)核被命名為 chromium汞贸。

chromium fork 自開源引擎 webkit绳军,卻把 WebKit 的代碼梳理得可讀性提高很多,所以以前可能需要一天進行編譯的代碼矢腻,現(xiàn)在只要兩個小時就能搞定门驾。因此 Chromium 引擎和其它基于 WebKit 的引擎所渲染頁面的效果也是有出入的。所以有些地方會把 chromium 引擎和 webkit 區(qū)分開來單獨介紹多柑,而有的文章把 chromium 歸入 webkit 引擎中奶是,都是有一定道理的。

谷歌公司還研發(fā)了自己的 Javascript 引擎顷蟆,V8诫隅,極大地提高了 Javascript 的運算速度。

Blink 引擎問世后帐偎,國產(chǎn)各種 chrome 系的瀏覽器也紛紛投入 Blink 的懷抱逐纬。

Presto ([‘prest??]):opera 的 “前任” 內(nèi)核

為何說是 “前任”,因為最新的 opera 瀏覽器早已將之拋棄從而投入到了谷歌大本營削樊。

注釋:Webkit 其實是 KHTML 的分支豁生,這里的 KHTML 指渲染引擎,Webkit 其實就泛指了 Webkit 的渲染引擎 WebCore漫贞,而 Webkit 引擎的 Javascript 引擎 JSCore 則是 KJS 的分支甸箱。而 chrome 則搭載了自己的 Javascript 引擎 V8。引用?各主流瀏覽器內(nèi)核介紹?里的一段話:我們上面提到 Chrome 是基于 WebKit 的分支迅脐,而 WebKit 又由渲染引擎 “WebCore” 和 JS 解釋引擎 “JSCore” 組成芍殖,可能會讓你搞不清 V8 和 JSCore 的關(guān)系。你可以這樣理解—— WebKit 是一塊主板谴蔑,JSCore 是一塊可拆卸的內(nèi)存條豌骏,谷歌實際上認為 Webkit 中的 JSCore 不夠好,才自己搞了一個 V8 JS 引擎隐锭,這就是 Chrome 比 Safari 在某些 JS 測試中效率更高的原因窃躲。

參考文獻:

1. 主流瀏覽器內(nèi)核介紹(前端開發(fā)值得了解的瀏覽器內(nèi)核歷史)

2.?主流瀏覽器內(nèi)核介紹

3. 深入理解瀏覽器工作原理

4.?萬維網(wǎng)百科

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钦睡,隨后出現(xiàn)的幾起案子蒂窒,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洒琢,死亡現(xiàn)場離奇詭異秧秉,居然都是意外死亡,警方通過查閱死者的電腦和手機纬凤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門福贞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撩嚼,“玉大人停士,你說我怎么就攤上這事⊥昀觯” “怎么了恋技?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長逻族。 經(jīng)常有香客問我蜻底,道長,這世上最難降的妖魔是什么聘鳞? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任薄辅,我火速辦了婚禮,結(jié)果婚禮上抠璃,老公的妹妹穿的比我還像新娘站楚。我一直安慰自己,他們只是感情好搏嗡,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布窿春。 她就那樣靜靜地躺著,像睡著了一般采盒。 火紅的嫁衣襯著肌膚如雪旧乞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天磅氨,我揣著相機與錄音尺栖,去河邊找鬼。 笑死烦租,一個胖子當著我的面吹牛延赌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播左权,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼皮胡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赏迟?” 一聲冷哼從身側(cè)響起屡贺,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后甩栈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泻仙,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年量没,在試婚紗的時候發(fā)現(xiàn)自己被綠了玉转。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡殴蹄,死狀恐怖究抓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情袭灯,我是刑警寧澤刺下,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站稽荧,受9級特大地震影響橘茉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姨丈,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一畅卓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蟋恬,春花似錦翁潘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至矾飞,卻和暖如春一膨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洒沦。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工豹绪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人申眼。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓瞒津,卻偏偏與公主長得像,于是被迫代替她去往敵國和親括尸。 傳聞我的和親對象是個殘疾皇子巷蚪,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 內(nèi)核 首先得搞懂瀏覽器內(nèi)核究竟指的是什么。 瀏覽器內(nèi)核又可以分成兩部分:渲染引擎(layout engineer ...
    一直以來都很好閱讀 793評論 0 1
  • 內(nèi)核 首先得搞懂瀏覽器內(nèi)核究竟指的是什么濒翻。瀏覽器內(nèi)核又可以分成兩部分:渲染引擎(layout engineer 或...
    李仁平閱讀 655評論 0 2
  • 瀏覽器內(nèi)核(browser kernel)是瀏覽器最為核心的部分屁柏,國內(nèi)的瀏覽器(諸如360啦膜,QQ,搜狗)大多數(shù)用了...
    沉落的星星閱讀 3,728評論 1 8
  • 內(nèi)核 首先得搞懂瀏覽器內(nèi)核指的是什么 瀏覽器內(nèi)核又可以分成兩部分:渲染引擎(layout engineer或者Re...
    聞金聽鳳閱讀 937評論 0 0
  • 第一次參加水上的訓(xùn)練項目,進水的時候覺著自己就要漂浮起來淌喻,出水的時候又覺得又千斤重僧家,奇妙的感覺。像是五行缺水啊裸删,水...
    星星de海子閱讀 103評論 0 0