zoukankan      html  css  js  c++  java
  • atitit..主流 浏览器 js 引擎 内核 市场份额 attialx总结vOa9

    atitit..主流 浏览器 js 引擎  内核 市场份额 attialx总结vOa9

    1. 浏览器内核 1

    2. 浏览器的主要组件包括: 2

    2.1. 主要组件体系结构 2

    2.2. WebCore排版引擎及JavaScriptCore解析引擎, 3

    2.3. 渲染引擎基本流程 3

    3. 当前主流浏览器的引擎及浏览器: 4

    3.1. Trident(MSHTML)IE 4

    3.2. PrestoOpera7及以上 4

    3.3. GeckoFirefox 4

    3.4. KHTML(衍生出WebKit )SafariKonqueror,Chromium 4

    4. 二、JavaScript引擎 5

    4.1. 1Chakra  查克拉,IE9启用的新的JavaScript引擎。 5

    4.2. 2SpiderMonkey / TraceMonkey / JaegerMonkey,FF 5

    4.3. 3V8  应用于Chrome、傲游3 5

    4.4. 4Nitro  应用于Safari 4及后续的版本。 5

    4.5. 5Linear A/Linear B/Futhark/Carakan,,Opera 5

    4.6. 6KJS  KHTML对应的JavaScript引擎。 5

    5. 浏览器市场份额and来源 5

    5.1. 来自Net Applications的最新市场份额数字 6

    5.2. StatCounter的统计数据方面 6

    6. 参考: 6

    1. 浏览器内核 

    浏览器最重要或者说核心的部分是“Rendering Engine”, 不过我们一般习惯将之称为“浏览器内核

    内核只是一个通俗的说法,其英文名称为“Layout engine”,翻译过来就是“排版引擎”,也被称为“页面渲染引擎”(下文中各种说法通用)。它负责取得网页的内容(HTML、XML、图像等等)、整理信息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印

    作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

    2. 浏览器的主要组件包括:

    1. 用户界面- 包括地址栏、后退/前进按钮、书签目录等,也就是你所看到的除了用来显示你所请求页面的主窗口之外的其他部分

    2. 浏览器引擎- 用来查询及操作渲染引擎的接口

    3. 渲染引擎- 用来显示请求的内容,例如,如果请求内容为html,它负责解析htmlcss,并将解析后的结果显示出来

    4. 网络- 用来完成网络调用,例如http请求,它具有平台无关的接口,可以在不同平台上工作

    5. UI 后端- 用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口

    6. JS解释器- 用来解释执行JS代码

    7. 数据存储- 属于持久层,浏览器需要在硬盘中保存类似cookie的各种数据,HTML5定义了web database技术,这是一种轻量级完整的客户端存储技术

    2.1. 主要组件体系结构

    内核》》Rendering Engine》》js engine

    1:浏览器主要组件

    需要注意的是,不同于大部分浏览器,Chrome为每个Tab分配了各自的渲染引擎实例,每个Tab就是一个独立的进程。

    2.2.  WebCore排版引擎及JavaScriptCore解析引擎,

    2.3. 渲染引擎基本流程

    渲染引擎首先通过网络获得所请求文档的内容,通常以8K分块的方式完成。

    下面是渲染引擎在取得内容之后的基本流程:

    解析html以构建dom->构建render->布局render->绘制render

    2:渲染引擎基本流程

    渲染引擎开始解析html,并将标签转化为内容树中的dom节点。接着,它解析外部CSS文件及style标签中的样式信息。这些样式信息以及html中的可见性指令将被用来构建另一棵树——render树。

    Render树由一些包含有颜色和大小等属性的矩形组成,它们将被按照正确的顺序显示到屏幕上。

    Render树构建好了之后,将会执行布局过程,它将确定每个节点在屏幕上的确切坐标。再下一步就是绘制,即遍历render树,并使用UI后端层绘制每个节点。

    值得注意的是,这个过程是逐步完成的,为了更好的用户体验,渲染引擎将会尽可能早的将内容呈现到屏幕上,并不会等到所有的html都解析完成之后再去构建和布局render树。它是解析完一部分内容就显示一部分内容,同时,可能还在通过网络下载其余内容。

    3. 当前主流浏览器的引擎及浏览器:

    3.1. Trident(MSHTML)IE

    3.2. PrestoOpera7及以上

    3.3. GeckoFirefox 

    3.4. KHTML(衍生出WebKit )SafariKonqueror,Chromium

     编注:WebKit 是一个开源的浏览器引擎,与之相应的引擎有GeckoMozilla Firefox 等使用的排版引擎)和Trident(也称为MSHTMLIE 使用的排版引擎)。同时WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于SafariDashboardMail 和其他一些Mac OS X 程序。WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS,当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。

    Prestoms速度快的..

    5Chromium(跨平台)

    其实 Chromium 就是 WebKit,维基百科里面并没有将ChromiumWebKit分出来,这个区分完全是基于我个人的恶趣味。记得以前看过一个大牛的博文说过,ChromiumWebKit的代码梳理得可读性提高很多,所以以前可能需要一天进行编译的代码,现在只要两个小时就能搞定。这个我自己也没有考究过,但是估计可信。这个也能解释为什么GeckoWebKit出来了这么久,第三方编译、定制的版本并不多,但是由Chromium衍生出来的浏览器早就满坑满谷了。

    常见的Chromium内核的浏览器:Google ChromeChromiumSRWare IronComodo Dragon

    4. 二、JavaScript引擎

    OperaJavaScript引擎的跑分上面一直都是很牛逼的,一般来说最新测试版之间PKOpera基本都会夺冠。

    4.1. 1Chakra  克拉,IE9启用的新的JavaScript引擎。

    4.2. 2SpiderMonkey / TraceMonkey / JaegerMonkey,FF

    SpiderMonkey应用在Mozilla Firefox 1.0-3.0TraceMonkey应用在Mozilla Firefox 3.5-3.6版本,JaegerMonkey应用在Mozilla Firefox 4.0及后续的版本。

    4.3. 3V8  应用于Chrome、傲游3

    4.4. 4Nitro  应用于Safari 4及后续的版本。

    4.5. 5Linear A/Linear B/Futhark/Carakan,,Opera 

    Linear A应用于Opera 4.0-6.1版本,Linear B应用于Opera 7.09.2版本,Futhark应用于Opera 9.5-10.2版本,Carakan应用于Opera 10.5及后续的版本。

    4.6. 6KJS  KHTML对应的JavaScript引擎。

    5. 浏览器市场份额and来源

    pc浏览器市场份额:::ie , ff ,chrome 都是30% ,safari 6% 手机浏览器 Safari 50%, android 20%,opera 10%,chrome 10%

    5.1. 来自Net Applications的最新市场份额数字

    5.2. StatCounter的统计数据方面

    6. 参考:

    [科普文关于浏览器内核的一些小知识,明明白白选浏览器!.htm

    201310月份全球主流浏览器市场份额排行榜 浏览迷.htm

    20138月全球浏览器市场占有率排行榜 免费绿色软件下载,共享软件基地,破解绿色软件免费下载 统一下载站.htm

    20148月份国内主浏览器市场份额排行榜 看引擎 KENGINE _ 看看新闻网 IT资讯.htm

    浏览器是如何工作的?(工作原理) - IE浏览器中文网站.htm

    我要啦免费统计
  • 相关阅读:
    Java类与对象
    读《大道至简——团队缺乏的不只是管理》有感
    java课后作业
    c++ 创建单项链表
    c++ 结构指针和双向链表
    c++ 自定义数据结构运用
    c++ 时间函数和结构化数据
    c++ 结束程序的几种方式
    c++ main函数的参数
    c++ 参数个数可变的函数
  • 原文地址:https://www.cnblogs.com/attilax/p/15199084.html
Copyright © 2011-2022 走看看