1.1. 浏览器简介

1.1.1. 浏览器结构

浏览器一般包括DOM引擎、CSS解释器、脚本引擎、渲染引擎、协议支持、媒体流支持、三方库、数据存储、用户界面等几个部分。

DOM引擎解析HTML、XML、SVG、MathML、XUL等内容。

CSS解释器解析CSS,为DOM中的各个元素计算样式信息。

渲染引擎根据元素与样式信息,计算大小、位置、布局,渲染解析后的内容。

脚本引擎包括JavaScript、VBScript、asm.js、WebAssembly等解释器,对脚本进行解释执行,并对DOM、CSS进行修改。

浏览器支持的协议通常包括HTTP、FTP、WebSocket、HTTP/2、QUIC、DNS、mDNS、WebRTC等。

浏览器支持的媒体流通常包括JPG、GIF、PNG、WebM、Ogg、AAC、MP3、MP4、FLAC等。

三方库包括Skia, ffmpeg, ICU, NSS, OpenVR, libpng, sqlite等。

用户界面包括地址栏、前进/后退按钮、书签菜单等。

1.1.2. 浏览器内核

浏览器内核比较主要的两部分是渲染引擎(Layout engineer或Rendering Engine)和JavaScript引擎。

渲染引擎负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。

浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。

JavaScript引擎则解析和执行JavaScript来实现网页的动态效果。最开始渲染引擎和JavaScript引擎并没有区分的很明确,后来JavaScript引擎越来越独立,内核就倾向于只指渲染引擎。