App下載

瀏覽器的心臟——什么是瀏覽器的內(nèi)核?

猿友 2021-06-25 10:57:16 瀏覽數(shù) (5382)
反饋

相信很多小伙伴們在學(xué)習(xí)前端后端或者web測試的時候總會聽到瀏覽器內(nèi)核這一稱謂。但是很多時候我們只是知道有內(nèi)核這個東西,并不知道瀏覽器內(nèi)核是干什么的,在什么時候需要使用到。接下來這篇文章,小編就著重介紹一下瀏覽器內(nèi)核。

什么是主流瀏覽器?

提到主流瀏覽器,很多小伙伴可能會想起360啊,qq啊uc等一眾國產(chǎn)瀏覽器。其實,他們都不算主流瀏覽器,因為他們都沒有自己的內(nèi)核(他們其實是別人的瀏覽器內(nèi)核套上自己的一層外殼)。那么哪些瀏覽器才能算主流瀏覽器呢?主要有以下幾種:谷歌的Chrome,蘋果的Safari,微軟的IE和edge,火狐的Firefox和Opera的Opera瀏覽器。為什么是他們呢?因為他們都有自己對應(yīng)的內(nèi)核。

 瀏覽器  對應(yīng)內(nèi)核
 IE  trident內(nèi)核(或者mshtml)
 Chrome  blink內(nèi)核(或者chromium)
 火狐瀏覽器 gecko內(nèi)核 
 Edge  最新的版本使用chromium內(nèi)核
 Opera presto(已廢棄,最新版也是用blink) 
 Safari webkit 

什么是瀏覽器內(nèi)核?

接下來就是本篇文章的重點之一——什么是瀏覽器內(nèi)核。瀏覽器內(nèi)核其實就是瀏覽器的渲染引擎,它的作用就是渲染html頁面。它的作用有點類似xml解析器。它通過讀取html和css文件,獲得一個個元素,然后使用渲染引擎將一個個元素按照要求展示在瀏覽器的窗口內(nèi)。這就是瀏覽器需要做的工作。

瀏覽器內(nèi)核的歷史

ie作為最古老的瀏覽器之一,他的trident內(nèi)核是自行開發(fā)的(早期是基于Mosaic,但是后期經(jīng)歷了各種魔改)。

edge作為ie的后繼者,在剛推出時他采用edgeHTML內(nèi)核進行渲染,這是一款基于trident進行開發(fā)的內(nèi)核。但是最后edge還是轉(zhuǎn)向使用chromium了。

Safari為了跟其它瀏覽器搶份額,和谷歌聯(lián)手開發(fā)了webkit內(nèi)核,早期的谷歌瀏覽器也是使用webkit內(nèi)核的。

Chrome后來跟Opera合作,在webkit的基礎(chǔ)上開發(fā)了blink內(nèi)核。

Opera使用presto內(nèi)核也是自行開發(fā)的,該內(nèi)核的渲染速度優(yōu)化到了極致。但是最后還是被Opera廢棄。

火狐瀏覽器使用自家的gecko。

2022年6月15日,微軟將停止ie的支持,意味著trident內(nèi)核使命的終結(jié),而edge,Opera,Chrome都使用谷歌的內(nèi)核,而谷歌內(nèi)核和webkit內(nèi)核屬于同一分支,到時候市場內(nèi)核只會存在gecko和webkit系內(nèi)核。網(wǎng)頁標(biāo)準(zhǔn)將趨于統(tǒng)一。

為什么要了解這些?

作為前端開發(fā)者,了解瀏覽器內(nèi)核對于頁面開發(fā)至關(guān)重要,不同的瀏覽器的渲染方式是不同的,而且不同瀏覽器對于W3C的標(biāo)準(zhǔn)支持也是不同的。有些比較新的標(biāo)準(zhǔn)部分瀏覽器是不支持的,而且這些內(nèi)核往往有一些“方言”。這些方言被稱為瀏覽器特性或者拓展支持。如果想讓你的頁面有更好的展示效果,使用這些瀏覽器特性是必須的。

作為測試開發(fā)者,你必須了解web頁面是否對瀏覽器進行兼容,而對于使用selenium的自動化測試人員來說,使用不同的瀏覽器需要使用不同的webdriver。

怎么查看瀏覽器內(nèi)核

一般網(wǎng)上都能搜索到該款瀏覽器對應(yīng)的內(nèi)核,后端開發(fā)工作者也可以通過獲取請求中的user-agent來知曉瀏覽器的類型(不是瀏覽器的user agent 服務(wù)器獲取的ua是可以對應(yīng)到瀏覽器的版本的)。

火狐瀏覽器將版本信息放在user agent里:

火狐的user-agent

chromium內(nèi)核的瀏覽器存放位置略有不同:

chromium內(nèi)核的請求頭

小結(jié)

以上就是關(guān)于瀏覽器內(nèi)核的介紹,相信看完這篇文章之后各位小伙伴應(yīng)該已經(jīng)了解了瀏覽器內(nèi)核是干什么的了吧?

不了解,沒關(guān)系,來前端開發(fā)課程,學(xué)習(xí)更多前端知識!


0 人點贊