参考链接:http://www.iplaysoft.com/browsers-engine.html ;http://www.iefans.net/liulanqi-neihe-jiexi/ ;
http://kb.cnblogs.com/page/129756;http://www.jianshu.com/p/df97d3b866d5
浏览器的主要构成:
1.用户界面
2.浏览器引擎(the browser engine)--- 用来查询及操作渲染引擎的接口;
3.渲染引擎(the rendering engine)--- 显示请求的内容;
4.网络 --- 用来完成网络调用,例如 HTTP 请求;
5.UI 后端 --- 用来回执类似组合框以及对话框等基本组件;
6.JS 解释器 --- 解释执行JS 代码;
7.数据存储 --- 属于持久层 ,浏览器或许会在本地保存各种数据,比如cookie
下图表示浏览器的主要组件:
渲染引擎(rendering engine)
即浏览器内核,(发现有的讲 浏览器内核=渲染引擎+JS引擎....)
rendering engine 负责取得网页的内容(HTML, XML, 图片等),整理讯息(加入CSS),计算网页的显示方式,然后输出到显示器或打印机。
渲染主流程:
渲染引擎首先通过网络获得请求文档的内容,通常以8K分块的方式完成。
渲染引擎获取内容之后的基本流程:
解析 html 构建 DOM 树 --->构建render树 --->布局render树 ---> 绘制render树
但是不同的浏览器内核对网页的语法解释不同,导致渲染效果也不同。(PS:浏览器渲染解析的过程,参考:http://www.cnblogs.com/cnwebdeveloper/articles/2234423.html 以及 http://www.jianshu.com/p/e141d1543143?utm_campaign=maleskine&utm_content=note&utm_medium=pc_author_hots&utm_source=recommendation----过程很详细)
主流浏览器内核有:
Trident 内核(windows):
即IE浏览器所用内核,Trident内核提供了丰富的调用接口,因此基于Trident内核的还有很多浏览器,比如360 安全浏览器,遨游,搜狗浏览器.....等等,其中部分浏览器的新版本是双核甚至多核,其中一个内核就是Trident,然后再增加一个其他内核。国内一般将其他内核叫做“高速浏览模式”,而Trident则是“兼容浏览模式”。
Gecko内核(跨平台):
最主流的Gecko内核浏览器是火狐浏览器,是开源的浏览器内核。
KHTML内核(Linux):
KDE开发的内核,速度快捷,容错度低。常见的KHTML 内核浏览器:Konqueror。
WebKit内核(跨平台):
由KHTML衍生而来。是苹果公司自己的内核。Chromium内核,就是WebKit内核,但是其可读性更高。在Chrome 28 之前,Google使用Chromium内核与自己的javascript V8引擎。
Blink内核:
又Google 和 Opera Software 开发的浏览器排版引擎。2013年,Google计划将该渲染引擎作为Chromium计划的一部分。并且在Chrome(28以及后面的版本),Opera(15以及后面的版本)中使用。
Presto内核(跨平台):
是 Opera12.10 -- Opera7 中采用的内核,现已停止开发并废弃。Opera12.10 版本之后使用Blink 作为其内核。由此可以看出,虽然浏览器很多,但是他们并非采用自主开发的内核,所以浏览器内核本身实际没有实质突破。