瀏覽器基礎(chǔ)知識(shí)

(整理自網(wǎng)絡(luò))


一、四種瀏覽器內(nèi)核

瀏覽器核心的種類大約只有三到四個(gè)鹿鳖,它們分別是:Trident扁眯、Gecko、WebKit和Presto翅帜。

1姻檀、Trident核心,代表產(chǎn)品Internet Explorer

Trident只能應(yīng)用于Windows平臺(tái)涝滴,且是不開源的绣版。

2、Gecko核心歼疮,代表作品Mozilla Firefox

Gecko是一套開放源代碼的杂抽、以C++編寫的網(wǎng)頁(yè)排版引擎。

3韩脏、WebKit核心默怨,代表作品Safari、Chrome

webkit 是一個(gè)開源項(xiàng)目主要用于Mac OS系統(tǒng)骤素,它的特點(diǎn)在于源碼結(jié)構(gòu)清晰、渲染速度極快愚屁。主要代表作品有Safari和Google的瀏覽器Chrome济竹。

4、Presto核心霎槐,代表作品Opera

速度最快的引擎送浊,這也是Opera被公認(rèn)為速度最快的瀏覽器的基礎(chǔ)。

殼子瀏覽器:

自己本身不帶內(nèi)核丘跌,而是直接調(diào)用本機(jī)其他瀏覽器的內(nèi)核袭景,來(lái)實(shí)現(xiàn)瀏覽的功能。

由于IE瀏覽器在國(guó)內(nèi)的普及率非常高闭树,所以造成了很多網(wǎng)上銀行和支付系統(tǒng)只支持IE的Trident內(nèi)核耸棒,其他瀏覽器訪問(wèn)根本無(wú)法進(jìn)行正常支付和轉(zhuǎn)賬等業(yè)務(wù)。很多瀏覽器開發(fā)商就運(yùn)用了殼子瀏覽器的特性推出了“雙核”瀏覽器报辱,帶有兩種瀏覽模式与殃,其原理就是本身帶一內(nèi)核,開啟兼容模式后,調(diào)用本機(jī)上的ie內(nèi)核幅疼,來(lái)實(shí)現(xiàn)雙引擎功能米奸。

二、瀏覽器的主要功能

瀏覽器的主要功能是將用戶選擇的web資源呈現(xiàn)出來(lái)爽篷,它需要從服務(wù)器請(qǐng)求資源悴晰,并將其顯示在瀏覽器窗口中,資源的格式通常是HTML逐工,也包括PDF铡溪、image及其他格式。用戶用URI(Uniform Resource Identifier統(tǒng)一資源標(biāo)識(shí)符)來(lái)指定所請(qǐng)求資源的位置钻弄,在網(wǎng)絡(luò)一章有更多討論佃却。

HTML和CSS規(guī)范中規(guī)定了瀏覽器解釋html文檔的方式,由W3C組織對(duì)這些規(guī)范進(jìn)行維護(hù)窘俺,W3C是負(fù)責(zé)制定web標(biāo)準(zhǔn)的組織饲帅。

三、瀏覽器的主要構(gòu)成

1. 用戶界面 - 包括地址欄瘤泪、后退/前進(jìn)按鈕灶泵、書簽?zāi)夸浀龋簿褪悄闼吹降?b>除了用來(lái)顯示你所請(qǐng)求頁(yè)面的主窗口之外的其他部分对途。

2. 瀏覽器引擎 - 用來(lái)查詢及操作渲染引擎的接口赦邻。

3. 渲染引擎(上文提到的瀏覽器內(nèi)核) - 用來(lái)顯示請(qǐng)求的內(nèi)容,例如实檀,如果請(qǐng)求內(nèi)容為html惶洲,它負(fù)責(zé)解析html及css,并將解析后的結(jié)果顯示出來(lái)膳犹。

4. 網(wǎng)絡(luò) - 用來(lái)完成網(wǎng)絡(luò)調(diào)用恬吕,例如http請(qǐng)求,它具有平臺(tái)無(wú)關(guān)的接口须床,可以在不同平臺(tái)上工作铐料。

5. UI后端 - 用來(lái)繪制類似組合選擇框及對(duì)話框等基本組件,具有不特定于某個(gè)平臺(tái)的通用接口豺旬,底層使用操作系統(tǒng)的用戶接口钠惩。

6. JS解釋器 - 用來(lái)解釋執(zhí)行JS代碼。

7. 數(shù)據(jù)存儲(chǔ) - 屬于持久層族阅,瀏覽器需要在硬盤中保存類似cookie的各種數(shù)據(jù)篓跛,HTML5定義了web database技術(shù),這是一種輕量級(jí)完整的客戶端存儲(chǔ)技術(shù)

渲染引擎很重要坦刀,單獨(dú)詳細(xì)介紹一下:

渲染引擎首先通過(guò)網(wǎng)絡(luò)獲得所請(qǐng)求文檔的內(nèi)容举塔,在取得內(nèi)容之后的基本流程:

a. 解析html以構(gòu)建dom樹

渲染引擎開始解析html绑警,并將標(biāo)簽轉(zhuǎn)化為內(nèi)容樹中的dom節(jié)點(diǎn)。接著央渣,它解析外部CSS文件及style標(biāo)簽中的樣式信息计盒。

b. 構(gòu)建render樹

Render樹由一些包含有顏色和大小等屬性的矩形組成,它們將被按照正確的順序顯示到屏幕上芽丹。

(關(guān)于render樹:

瀏覽器在構(gòu)造DOM樹的同時(shí)也在構(gòu)造著另一棵樹Render Tree,與DOM樹相對(duì)應(yīng)叫它Render樹北启,我們知道DOM樹為javascript提供了一些列的訪問(wèn)接口(DOM API),但這棵樹是不對(duì)外的拔第。它的主要作用就是把HTML按照一定的布局與樣式顯示出來(lái)咕村,用到了CSS的相關(guān)知識(shí)。

每一個(gè)Render樹的節(jié)點(diǎn)稱之為renderer或者render object蚊俺,renderer包含了一個(gè)dom對(duì)象以及它的樣式懈涛。

具體顯示的時(shí)候,每一個(gè)renderer體現(xiàn)了一個(gè)矩形區(qū)塊的東西泳猬,即我們常說(shuō)的CSS盒子模型的概念批钠,它本身包含了一些幾何學(xué)相關(guān)的屬性,如width得封,position埋心,display等。

可以這么說(shuō)忙上,沒(méi)有DOM樹就沒(méi)有Render樹拷呆,但是它們之間可不是簡(jiǎn)單的一對(duì)一的關(guān)系。我們已經(jīng)知道了render樹是用于顯示的疫粥,那不可見的元素當(dāng)然不會(huì)在這棵樹中出現(xiàn)了茬斧,譬如<header>。

c. ?布局render樹?

確定每個(gè)節(jié)點(diǎn)在屏幕上的確切坐標(biāo)梗逮。

d. ?繪制render樹

即遍歷render樹啥供,并使用UI后端層繪制每個(gè)節(jié)點(diǎn)。

雖然abcd這個(gè)過(guò)程是逐步完成的库糠,但為了更好的用戶體驗(yàn),渲染引擎將會(huì)盡可能早的將內(nèi)容呈現(xiàn)到屏幕上涮毫,并不會(huì)等到所有的html都解析完成之后再去構(gòu)建和布局render樹瞬欧。它是解析完一部分內(nèi)容就顯示一部分內(nèi)容


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市罢防,隨后出現(xiàn)的幾起案子艘虎,更是在濱河造成了極大的恐慌,老刑警劉巖咒吐,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件野建,死亡現(xiàn)場(chǎng)離奇詭異属划,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)候生,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門同眯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人唯鸭,你說(shuō)我怎么就攤上這事须蜗。” “怎么了目溉?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵明肮,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我缭付,道長(zhǎng)柿估,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任陷猫,我火速辦了婚禮秫舌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烙丛。我一直安慰自己舅巷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布河咽。 她就那樣靜靜地躺著钠右,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忘蟹。 梳的紋絲不亂的頭發(fā)上飒房,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音媚值,去河邊找鬼狠毯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛褥芒,可吹牛的內(nèi)容都是我干的嚼松。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锰扶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼献酗!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起坷牛,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤罕偎,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后京闰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颜及,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甩苛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了俏站。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讯蒲。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乾翔,靈堂內(nèi)的尸體忽然破棺而出爱葵,到底是詐尸還是另有隱情,我是刑警寧澤反浓,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布萌丈,位于F島的核電站,受9級(jí)特大地震影響雷则,放射性物質(zhì)發(fā)生泄漏辆雾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一月劈、第九天 我趴在偏房一處隱蔽的房頂上張望度迂。 院中可真熱鬧,春花似錦猜揪、人聲如沸惭墓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腊凶。三九已至,卻和暖如春拴念,著一層夾襖步出監(jiān)牢的瞬間钧萍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工政鼠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留风瘦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓公般,卻偏偏與公主長(zhǎng)得像万搔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子官帘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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