Skip to content

浏览器

浏览器是现代 Web 应用的运行环境,与普通的 GUI 程序不同,浏览器包含着众多的组件,需要经过复杂的实现逻辑。

组成

现代浏览器至少包含几个核心组件

组件功能例子
web 渲染引擎实现 HTML 和 CSS 语言,解析二者的代码,生成渲染指令,绘制 HTML 元素Blink(下层基于 Skia)
JavaScript 引擎实现 JavaScript 语言V8
网络协议客户端实现各种网络协议的客户端逻辑Http(s), WebSocket
客户端数据存储实现 Web 客户端数据持久化标准Cookie, LocalStorage, IndexedDB
浏览器主应用封装和整合所有组件,并提供浏览器自身的 GUIchromium

除此之外,还有一些其他的模块需要处理:例如:实现 Webgl/WebGPU 图形 API 标准、Web 媒体资源编码和压缩、HTML 的 SVG 语法扩展等等

主流浏览器

所属项目Google ChromeMozilla FirefoxApple Safari
排版引擎BlinkGeckoWebKit
样式计算BlinkStyloWebCore
JS 引擎V8SpiderMonkeyJavaScriptCore
渲染架构SkiaWebRender + GPUCoreGraphics
开源许可BSD-likeMPLLGPL/MPL 兼容

Edge 和 Opera 已经将核心组件迁移到 Chrome,可以理解成同一个浏览器的换皮版本。目前在浏览器市场上,Chrome 一家独大,占据了较多的市场份额,并且自恃开源复刻引擎 Chromium,积极跟进 Web 标准和新特性,目前没有动摇的迹象。