發現作為一個未來前端工程師,今天被問到瀏覽器內核的事情,竟然卡殼愣住了,所以以下的內容僅是初步對各大瀏覽器內核的調研。有不對的地方,請各位大佬指正。
瀏覽器內核是一個瀏覽器的核心部分,英文名字叫“Rendering Engine”,大致可翻譯為 渲染引擎 。渲染這個詞對我們前端工作人員來說應該都不陌生。瀏覽器內核主要就負責,將對網頁語法的解釋(HTML,JS,CSS)渲染在屏幕上。它決定了瀏覽器如何顯示網頁的內容以及頁面的格式信息。
而前端工作人員,經常被這樣要求:能夠編寫兼容各大主流瀏覽器的代碼。我初步的認為,就是我們編寫的代碼,能夠在各大內核上被正確的渲染。
那么,要達到這一個目的,首先,我們就要知道,有些什么樣的瀏覽內核,他們各有什么特色。
Trident
也就是我們俗稱的“IE內核”,早期由微軟在Mosaic代碼的基礎之上修改而來的。
- 優點
是一款開放的內核,其接口內核設計的相當成熟 - 缺點
在早期,由于微軟長時間沒有更新該內核,使得它曾經一度與W3C標準脫節
內核的大量bug等安全問題沒有及時解決,在非Trident內核瀏覽器的市場占有率大幅度提高時,使得很多網頁開發者意識到了網頁標準和非IE瀏覽器的瀏覽效果問題。
Webkit
蘋果公司出品,是開源世界的一大貢獻。
- 優點
開源,被多個瀏覽器應用。遵循W3C標準,性能非常好,網頁瀏覽速度較快 - 缺點
對于網頁代碼的容錯性不高
一個小補充,Webkit雖然被大家稱為瀏覽器內核,但不太適合直接稱為Rendering Engine,主要就是因為Webkit是由WebCore和JSCore兩大引擎構成的。
Gecko
Netscape6開始采用的內核,后來的Mozilla FireFox也采用了該內核,所以常被稱作“火狐內核”
- 優點
完全開源,可開發程序很高,可跨平臺,功能強大、豐富,可以支持很多復雜網頁效果和瀏覽器擴展接口 - 缺點
消耗很多的資源,比如內存
主要的瀏覽器內核就列了這三個,國內一般接觸到的瀏覽器基本都是這三個內核中的一個或者是組合。許多號稱擁有雙核甚至多核的瀏覽器,一般其中一個是Trident,再搭配另外一個。國內廠商一般將Trident內核叫做“兼容瀏覽模式”,其他內核叫做“告訴瀏覽模式”
一些小知識點
我們常說的chrome瀏覽器是谷歌使用WebKit作為內核原型開發的一個分支,可以稱之為Chromium引擎。在執行js代碼,用的是谷歌自己的V8引擎
在工作中,常常要求前端開發人員代碼能夠兼容各大主流瀏覽器,其實就是在于各大瀏覽器使用的渲染引擎和JS引擎不同,有部分自己的渲染規則。尤其是對于很多地區還會使用低版本的IE瀏覽器,上文說了,早期的版本沒有嚴格遵循W3C標準,所以給開發工作提出了很大挑戰。
也許很多小伙伴在初學的時候,都會有過和我一樣的思考,所謂兼容主流瀏覽器,不就是考慮要兼容低版本的IE嗎?但是實際上,瀏覽器內核國內暫時沒有自己的瀏覽器內核,全是使用國外開源的內核,所以還有很多一些小眾的瀏覽器在開發的時候就是用Trident內核的。
關于如何兼容主流瀏覽器,大家請移步看看別人的文章