背景
市面上的浏览器很多,很多很多,多到数不过来。不过目前 Chrome 浏览器还是占了主导地位,至少在开发人员眼里 Chrome 的地位很高。这篇文章来说说 Chrome 浏览器的架构,漫谈漫谈~
抽象架构
浏览器的主要功能就是向服务器发出请求,在浏览器窗口中展示您选择的网络资源,这里所说的资源一般是指 HTML 文档,也可以是 PDF、图片或其他的类型。大体上,浏览器可以分为五部分,如下图:
用户界面(地址栏、前进/后退按钮、书签菜单等)
浏览器引擎(在用户界面和渲染引擎之间传送指令)
渲染引擎(解析 HTML、CSS和JS并呈现页面)
后端服务层(网络、数据存储如Cookie、Storage等)
特别服务层(记住密码、暗黑模式等)
这个图还是比较清晰的,首先用户界面,主要负责展示页面中,除了 page 本身的内容,我们可以粗略地理解为打开一个空页面的时候呈现的界面就是浏览器的用户界面(GUI)。
浏览器引擎,这里个人认为主要指的是在用户界面和渲染引擎之间传递指令,以及调度浏览器各方面的资源,协调为呈现页面、完成用户指令而工作。
呈现引擎,按图中看,包含了一个 compositor(合成器)
和 Javascript Engine(JS解释引擎)
。分别是负责解析 HTML 和 CSS 内容,并将解析后的内容显示在屏幕上 和 用于解析和执行 JavaScript 代码。
后端服务层,这里包含了一些后端服务。比如网络请求层(network)、数据存储,浏览器需要在硬盘上保存各种数据,例如 Cookie、Storage等。
特别服务层,这里主要指的是一些浏览器自带的服务,比如你填完某个网站的账号密码&