浏览器简介
众所周知,浏览器是能够解析HTML以及CSS、JavaScript的软件,其中HTML与CSS能够被识别是浏览器渲染功能,而JavaScript则是JS引擎的功能。
浏览器功能结构:
- 用户界面(UI) - 包括菜单栏、工具栏、地址栏、后退/前进按钮、书签目录等,也就是能看到的除了显示页面的主窗口之外的部分;
- 浏览器引擎(Rendering engine) - 也被称为浏览器内核、渲染引擎,主要负责取得页面内容、整理信息(应用 CSS)、计算页面的显示方式,然后会输出到显示器或者打印机;
- JS 解释器 - 也可以称为 JS 内核,主要负责处理 javascript 脚本程序,一般都会附带在浏览器之中,例如 chrome 的 V8 引擎;
- 网络部分 - 主要用于网络调用,例如:HTTP 请求,其接口与平台无关,并为所有的平台提供底层实现;
- UI 后端 - 用于绘制基本的窗口部件,比如组合框和窗口等。
- 数据存储 - 保存类似于 cookie、storage 等数据部分,HTML5 新增了 web database 技术,一种完整的轻量级客户端存储技术。
- 渲染引擎与JS引擎是核心,它们与HTML版本、CSS版本以及ECMAScript版本密切相关;
- 浏览器引擎是各个类型的浏览器独有的,比如Chrome、FireFox、IE/Edge、Safri、Opera等;
以下是各个不同浏览器所对应的渲染引擎与JS引擎:
浏览器的多进程架构
现代浏览器基本都是采用的多进程架构,主要包括三种进程。
- Browser进程:浏览器主线程,对应浏览器引擎部分,整个浏览器应用程序只有一个,主要负责页面管理、书签、资源管理等;
- 渲染进程:对应渲染引擎和JS引擎,整个浏览器应用程序可以包含多个渲染进程,主要负责页面渲染、JS执行,属于内核进程;
- GPU进程:负责GPU渲染,整个浏览器应用程序只有一个;