内容参考自:http://chuquan.me/2018/01/21/browser-architecture-overview/
浏览器结构大致如下图所示:
用户界面
主要包括工具栏、地址栏、前进/后退按钮、书签菜单等部分
作用:提供浏览器会话管理、与其他桌面应用程序通信
浏览器引擎
为渲染引擎提供高级接口
加载给定的url,提供前进/后退/重新加载操作
提供查看浏览会话的各个方面的挂钩,例如:当前页面加载进度
查询/修改渲染引擎设置
渲染引擎/浏览器内核(包含HTML解析器)
为指定的url生成可视化的表示
显示html和xml文档,选择css样式及嵌入式内容(例如:图片)
计算布局,调整页面元素位置
浏览器/Run Time | 内核(渲染引擎) | Javascript引擎 |
---|---|---|
Chrome | Blink | V8 |
FireFox | Gecko | SpiderMonkey |
Safari | WebKit | JavaScriptCore |
IE->Edge | trident->EdgeHTML | JScript(IE3.0-IE8.0) / Chakra(IE9+) |
Opera | Presto->Blink | Futhark(9.5-10.2)/ Carakan(10.5-) |
网络
实现http和ftp等文件传输协议
JavaScript引擎
解释执行嵌入在网页中的js代码
XML解析器
将xml文档解析为dom树
显示后端
提供绘图和窗口原语(不太懂是什么,了解即可)
数据持久层
将浏览会话相关的数据存储在硬盘上,例如:书签、工具栏设置、Cookie、安全证书、缓存