簡介瀏覽器內核與JavaScript引擎

本文介紹了常用瀏覽器內核與JavaScript引擎

一、瀏覽器內核

Rending Engine, 顧名思義,稱之為渲染網頁內容的,將網頁的代碼轉換為你看得見的頁面,因為是排版,所以排版,所以肯定會有排版錯誤等問題。為什么會有排版錯誤呢,一部分是由于網站本身編寫不規范,另一方面是瀏覽器本身的不規范,現在有一些主流的排版引擎,因為這些排版引擎都有其代表的瀏覽器,所以常常會把排版引擎的名稱和瀏覽器的名稱混用,其實這樣是不合理的,因為一個完整的瀏覽器不會只有唯一的排版引擎,還有自己的界面框架和其他的功能支撐,而排版引擎本身也不可能實現瀏覽器的所有功能,下面羅列出幾款主流的的排版引擎和瀏覽器

1、Trident內核(window)

Trident就是大名鼎鼎的IE瀏覽器所使用的內核,也是很多瀏覽器所使用的內核,MS現在采用的越來越少,反之使用webkit的越來越多,老的trident內核(比如IE6)當年占得市場份額很大,后果就是大量的網頁是專門為IE6等老trident內核編寫,但這些網頁的代碼并不符合w3c標準,于是完全符合w3c標準的網頁在老trident內核下出現了偏差,這就是為什么后來很多人覺得后來的IE9網頁排版有點混亂,而IE6正常,其實不是瀏覽器的兼容性差了,而是你訪問的的網頁不符合新的標準,目前可供調用的最新版的Trident內核是IE9使用的內核,較之前的版本對w3c的標準支持增了很多
基于Trident內核的瀏覽器有:
ie6,ie7,ie8(Trident 4.0) , ie9(trident 5.0) , ie10(trident6.0);
世界之窗,360安全瀏覽器, 遨游2.0(3.0以上版本開始采用webkit內核),搜狗瀏覽器,騰訊TT;其中部分版本的瀏覽器是雙核瀏覽器,甚至是多核,

2、Gecko(跨平臺)

Natescape6啟用的內核,現在又mozilla基金會進行維護,是開源的瀏覽器內核,目前主流的Gecko內核是mozilla firefox, 由于firefox的出現,IE的霸主地位逐漸被削弱,chrome的出現加速了這個進程,非trident內核的興起逐漸改變了整個互聯網的格局,最直接的推動是編碼的標準化,也使MS在競爭的壓力下不得不改進IE,不過可惜的是,雖然是開源的,也開發了這么多年,基于Gecko的瀏覽器并不多見,除了一些簡單的改動或者重新編譯,深度定制或者增了強外殼的還是比較少見。另外就是一些軟件借用了Gecko,比如音樂管理軟件songbird

3、khtml(Linux)

KDE開發的內核,速度快捷,容錯率低,這種內核不見得有很多人知道,但后面看下去你就會明白,常見的khtml內核的瀏覽器有:konqueror

4、webkit(跨平臺)

由khtml發展而來,也是apple給開源世界的一大貢獻,是目前最火熱的瀏覽器內核,火熱的不是說它的市場份額,而是應用的面積和勢頭,因為脫胎于khtml,所以具有高速的特點,同樣遵守w3c標準,從目前來看,webkit內核是最具有潛力而且是已經有相當成績的新型內核,性能非常好,對w3c標準的支持也非常完善,本人十分看好他、
常見的基于webkit內核的瀏覽器主要有:
apple 的safari(win/mac/iphone/ipad) 、google的chrome、塞班手機瀏覽器、Android手機默認的瀏覽器

5、Presto(跨平臺)

opera所 采用的內核,準確的說是opera7.0及以后的版本采用的內核,之前的版本采用的內核是elektra, 無容置疑,Presto內核對w3c的支持也很良好,presto對頁面文字的解析方面的性能比webkit還要高,對頁面有較高的閱讀性。
然而為了減少研發成本,Opera在2013年2月宣布放棄Presto,轉而跟隨Chrome使用WebKit分支的Chromium引擎作為自家瀏覽器核心引擎。
在Chrome與2013年推出Blink引擎(也是基于WebKit的分支)之后,Opera也緊跟其腳步表示將轉而使用Blink作為瀏覽器核心引擎。
基于presto的內核的瀏覽器有:opera

二、JavaScript引擎

說完了排版引擎,下面來說說JavaScript引擎,顧名思義,js引擎就是用來執行javascript代碼的, 簡單的舉個例子,一個計算圓周率的網頁,排版引擎把頁面的框架顯示出來,最終的結果要用javascript來計算,所以javascript引擎的快慢也是對整個網頁的速度有很大的影響,特別是最近 目前越來越多的類似webQQ、Gmail等大量復雜的基于javascript運算的網站,不同的執行引擎的速度的差別很顯然易見。為甚么要單獨拿出來說,因為還涉及到跑分,現在通俗的說那個瀏覽器更快,實際上是指執行javascript腳本的速度也就是javascript的渲染速度,而不是頁面的載入速度,在網速允許的情況下,其實各瀏覽器的網頁載入的速度差別不是很大,由于現在javascript在頁面中的比重越來越大,越來越多的動態畫面開始大量借助于javascript,比如現在主流的SNS、郵箱、網頁游戲,所以javascript的渲染速度也是一個很重要的指標,javascript的渲染速度越快,動態頁面的顯示也就是越快,opera在javascript引擎的跑分上一直是遙遙領先的,一般來說在最新版本之間PK,opera基本上都會奪冠。

1、IE

chakra:查克拉,IE9啟用的新的javascript引擎

2、Chrome

V8:開源,由Google丹麥開發,是Google Chrome的一部分。
注:我們上面提到Chrome是基于WebKit的分支,而WebKit又由渲染引擎“WebCore”和JS解釋引擎“JSCore”組成,可能會讓你搞不清V8和JSCore的關系。你可以這樣理解——WebKit是一塊主板,JSCore是一塊可拆卸的內存條,谷歌實際上認為Webkit中的JSCore不夠好,才自己搞了一個V8 JS引擎,這就是Chrome比Safari在某些JS測試中效率更高的原因。

3、Opera

Linear A:用于Opera 4.0~6.1版本。
Linear B:用于Opera 7.0~9.2版本。
Futhark:用于Opera 9.5~10.2版本。
Carakan:由Opera軟件公司編寫,自Opera10.50版本開始使用。

4、Firefox

SpiderMonkey:第一款JavaScript引擎,由Brendan Eich在Netscape Communications時編寫,用于Mozilla Firefox 1.0~3.0版本。
Rhino:由Mozilla基金會管理,開放源代碼,完全以Java編寫。
TraceMonkey:基于實時編譯的引擎,其中部份代碼取自Tamarin引擎,用于Mozilla Firefox 3.5~3.6版本。
JaegerMonkey:德文J?ger原意為獵人,結合追蹤和組合碼技術大幅提高性能,部分技術借鑿了V8、JavaScriptCore、WebKit:用于Mozilla Firefox 4.0以上版本。
IonMonkey:可以對JavaScript編譯后的結果進行優化,用于Mozilla Firefox 18.0以上版本。
OdinMonkey:可以對asm.js進行優化,用于Mozilla Firefox 22.0以上版本。

5、其它

KJS:KDE的ECMAScript/JavaScript引擎,最初由Harri Porten開發,用于KDE項目的Konqueror網頁瀏覽器中。
Narcissus:開放源代碼,由Brendan Eich編寫(他也參與編寫了第一個SpiderMonkey)。
Tamarin:由Adobe Labs編寫,Flash Player 9所使用的引擎。
Nitro(原名SquirrelFish):為Safari 4編寫。

轉載于:https://www.cnblogs.com/yanglang/p/6762433.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393071.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393071.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393071.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux查看tar實用程序,linux tar指令常用選項

linux的tar指令經常被用到,因為壓縮文件的時候通常需要打包文檔,而tar指令就是打包指令,同時gzip壓縮程序和bzip2壓縮程序都是支持tar指令的,所以tar指令在打包的同時還可以用gzip和bzip進行壓縮,這樣多文件可以打包的…

代碼字體mono_如何構建代碼存儲庫:Multi,Mono或Organic?

代碼字體monoby Chetan Sharma由Chetan Sharma 如何構建代碼存儲庫:Multi,Mono或Organic? (How to Structure Code Repositories: Multi, Mono, or Organic?) The newest debate in town is whether you should keep your services in a si…

leetcode1424. 對角線遍歷 II(排序)

給你一個列表 nums ,里面每一個元素都是一個整數列表。請你依照下面各圖的規則,按順序返回 nums 中對角線上的整數。 示例 1: 輸入:nums [[1,2,3],[4,5,6],[7,8,9]] 輸出:[1,4,2,7,5,3,8,6,9] 代碼 class Solution …

DaVinci各版本安裝指南

鏈接: https://pan.baidu.com/s/1g1kaXZxcw-etsJENiW2IUQ?pwd0531 ? #2024版 1.鼠標右擊【DaVinci_Resolve_Studio_18.5(64bit)】壓縮包(win11及以上系統需先點擊“顯示更多選項”)【解壓到 DaVinci_Resolve_Studio_18.5(64bit)】。 2.打開解壓后的文…

使用 Servlet 讀取表單數據

Technorati 標簽: servlet;java 一、概述 Servlet 有一個比較好的功能就是可以自動處理表單提交的數據。我們只需要調用HttpServletRequest#getParameter(String name),就可以獲得指定參數的值(String),注意此方法是大小寫敏感的。…

linux文檔權限

1、登錄 root 用戶:su - mac一開始進入創建的用戶是具有管理員權限的用戶,但是密碼卻不是進入 root 用戶的密碼,可以使用 sudo su - 免密進入 root 用戶。 2、退出 root 用戶:exit 3、列出檔案(包括隱藏的檔案&#xf…

小程序 仿麥當勞_手機上的麥當勞和星巴克:為什么現在首先使用移動應用程序...

小程序 仿麥當勞by James Hsu由徐H 手機上的麥當勞和星巴克:為什么現在首先使用移動應用程序 (McDonald’s and Starbucks on Your Phone: Why Mobile Apps Are Now First on the Menu) One Friday this July, I got excited about McDonalds. So excited that I s…

MyLinkedList

/*** 節點類* author JP* */ class Node {Object value;//節點元素值Node pre;//上一個節點Node next;//下一個節點public Node(Object value) {this.value value;} }/*** 鏈表類* author JP**/ public class MyLinkedList {Node cur;//目前指向的節點Node head;//頭結點Node …

linux開啟ping服務,Linux 云服務器禁止和開啟Ping

原標題:Linux 云服務器禁止和開啟Ping在使用Linux服務器的時候,一般系統默認是開啟ping的,比如我們可以ping測試網絡的延遲質量。當然也有部分服務商是可以通過安全組設置禁止ping的,我們可以設置安全組對應項目開啟或禁止ping&am…

leetcode1432. 改變一個整數能得到的最大差值(貪心)

給你一個整數 num 。你可以對它進行如下步驟恰好 兩次 &#xff1a; 選擇一個數字 x (0 < x < 9). 選擇另一個數字 y (0 < y < 9) 。數字 y 可以等于 x 。 將 num 中所有出現 x 的數位都用 y 替換。 得到的新的整數 不能 有前導 0 &#xff0c;得到的新整數也 不能…

oracle之 Oracle歸檔日志管理

在Oracle中&#xff0c;數據一般是存放在數據文件中&#xff0c;不過數據庫與Oracle最大的區別之一就是數據庫可以在數據出錯的時候進行恢復。這個也就是我們常見的Oracle中的重做日志(REDO FILE)的功能了。在重做日志分成2部分&#xff0c;一個是在線重做日志文件&#xff0c;…

linux 安裝rmp服務,Linux LAMP服務的rpm包安裝與配置

1.apache(httpd) 所在光盤裝包apr-xxx.rpm (二)postgresql-libs-xxx.rpm (二)apr-util-xxx.rpm (二)http-xxx.rpm (二)2.mysql (二)裝包perl-DBI-xxx.rpm (二)mysql-xxx.rpm (二)3.mysqlserver裝包perl-DBD-mysql-xxx.rpm (二)mysql-server-xxx.rpm (二)4.PHP裝包gmp-xxx.rpm (…

紅外感應模塊+蜂鳴器實現簡易報警(轉)

拿到了一個紅外感應模塊HC-SR501&#xff0c;于是就用它和蜂鳴器簡單試驗了下。主要是試驗一下這個紅外感應模塊的功能&#xff0c;所以代碼也寫的很隨便啦&#xff0c;邏輯上也欠考慮。實現基本功能&#xff1a;運行腳本后&#xff0c;感應模塊每隔一定時間檢測&#xff0c;如…

leetcode51. N 皇后(回溯算法)

n 皇后問題研究的是如何將 n 個皇后放置在 nn 的棋盤上&#xff0c;并且使皇后彼此之間不能相互攻擊。 上圖為 8 皇后問題的一種解法。 給定一個整數 n&#xff0c;返回所有不同的 n 皇后問題的解決方案。 每一種解法包含一個明確的 n 皇后問題的棋子放置方案&#xff0c;該方案…

ubuntu下python的錯誤

ubuntu python 2.7 python test.py *.py permission denied chmod x *.py 轉載于:https://www.cnblogs.com/gisalameda/p/11086624.html

kotlin半生對象_如何在Kotlin中使用Actor實現對象池

kotlin半生對象by osha1由osha1 如何在Kotlin中使用Actor實現對象池 (How to implement an Object-Pool with an Actor in Kotlin) We use object pool in jasync-sql to manage connections to the database. In this post, I will share how it is done in a performant, lo…

linux運行apktool簽名,解決Linux中使用ApkTool遇到問題

8種機械鍵盤軸體對比本人程序員&#xff0c;要買一個寫代碼的鍵盤&#xff0c;請問紅軸和茶軸怎么選&#xff1f;遇到問題在Linux中使用IntelliDroid工具時&#xff0c;按要求配置好環境之后&#xff0c;始終無法成功運行該工具內部的ApkTool&#xff0c;導致后續的安卓靜態分析…

python 腳本學習(二)

task1&#xff1a; 在一個文件中&#xff0c;單詞之間使用空格、分號、逗號或者句號分隔&#xff0c;請提取全部單詞。 代碼實例&#xff1a; 1234567891011#!/usr/local/python27/bin/python2.7import sys import re words [] with open(sys.argv[1]) as f: for line in f: #…

2.2 Consumer API官網剖析(博主推薦)

不多說&#xff0c;直接上干貨&#xff01; 一切來源于官網 http://kafka.apache.org/documentation/ 2.2 Consumer API 2.2、消費者API 隨著0.9.0版本&#xff0c;我們已經增加了一個新的Java消費者替換我們現有的基于zookeeper的高級和低級消費者。這個客戶端還是測試版的質量…

leetcode1053. 交換一次的先前排列(貪心算法)

給你一個正整數的數組 A&#xff08;其中的元素不一定完全不同&#xff09;&#xff0c;請你返回可在 一次交換&#xff08;交換兩數字 A[i] 和 A[j] 的位置&#xff09;后得到的、按字典序排列小于 A 的最大可能排列。 如果無法這么操作&#xff0c;就請返回原數組。 示例 1&a…