WebKit技术内幕朱永盛

《WebKit技术内幕》从炙手可热的HTML5 的基础知识入手,重点阐述目前应用最广的渲染引擎项目——WebKit。不仅着眼于系统描述WebKit 内部渲染HTML 网页的原理,并基于Chromium 的实现,阐明渲染引擎如何高效地利用硬件和最新技术,而且试图通过对原理的剖析,向读者传授实现高性能Web 前端开发所需的宝贵经验。

《WebKit技术内幕》首先从总体上描述WebKit 架构和组成,而后涵盖Web 前端和所有与之相关的重要技术,包括网络、资源加载、HTML 和CSS 解析、渲染树、布局、硬件加速、JavaScript 引擎、多媒体、移动支持、插件机制、安全机制、调试和最新的Web 平台等。对于每一项技术,在介绍基本含义之上,详细分析WebKit 内部的工作原理,进而从实践角度道出由此带来的Web 前端开发启示。

目录

第1章 浏览器和浏览器内核   1
    1.1 浏览器 1
    1.1.1 浏览器简介 1
    1.1.2 浏览器特性 4
    1.1.3 HTML  5
    1.1.4 用户代理和浏览器行为    8
    1.1.5 实践:浏览器用户代理    9
    1.2 浏览器内核及特性    11
    1.2.1 内核和主流内核   11
    1.2.2 内核特征  12
    1.3 WebKit内核    15
    1.3.1 WebKit介绍  15
    1.3.2 WebKit和WebKit2    16
    1.3.3 Chromium内核:Blink  18
    1.4 本书结构    18
第2章 HTML网页和结构   21
    2.1 网页构成    21
    2.1.1 基本元素和树状结构 21
    2.1.2 HTML5新特性  23
    2.2 网页结构    25
    2.2.1 框结构   25
    2.2.2 层次结构  27
    2.2.3 实践:理解网页结构 29
    2.3 WebKit的网页渲染过程   31
    2.3.1 加载和渲染 31
    2.3.2 WebKit的渲染过程   32
    2.3.3 实践:从网页到可视化结果  35
第3章 WebKit架构和模块 39
    3.1 WebKit架构及模块 39
    3.1.1 获取WebKit  39
    3.1.2 WebKit架构  40
    3.1.3 WebKit源代码结构   43
    3.2 基于Blink的Chromium浏览器结构   45
    3.2.1 Chromium浏览器的架构及模块 45
    3.2.2 实践:从Chromium代码结构和运行状态理解现代浏览器  56
    3.3 WebKit2 61
    3.3.1 WebKit2架构及模块  61
    3.3.2 WebKit和WebKit2嵌入式接口   62
    3.3.3 比较WebKit2和Chromium的多进程模型以及接口  63
第4章 资源加载和网络栈    65
    4.1 WebKit资源加载机制    65
    4.1.1 资源    65
    4.1.2 资源缓存  67
    4.1.3 资源加载器 68
    4.1.4 过程    69
    4.1.5 资源的生命周期   70
    4.1.6 实践:资源的缓存  71
    4.2 Chromium多进程资源加载 74
    4.2.1 多进程   74
    4.2.2 工作方式和资源共享 76
    4.3 网络栈 78
    4.3.1 WebKit的网络设施   78
    4.3.2 Chromium网络栈   78
    4.3.3 磁盘本地缓存    84
    4.3.4 Cookie机制  88
    4.3.5 安全机制  90
    4.3.6 高性能网络栈    90
    4.3.7 实践:Chromium网络工具和信息    97
    4.4 实践:高效的资源使用策略    99
    4.4.1 DNS和TCP连接 99
    4.4.2 资源的数量 99
    4.4.3 资源的数据量    100
第5章 HTML解释器和DOM模型   101
    5.1 DOM模型   101
    5.1.1 DOM标准 101
    5.1.2 DOM树  104
    5.2 HTML解释器 107
    5.2.1 解释过程  107
    5.2.2 词法分析  110
    5.2.3 XSSAuditor验证词语    111
    5.2.4 词语到节点 111
    5.2.5 节点到DOM树   113
    5.2.6 网页基础设施    114
    5.2.7 线程化的解释器   117
    5.2.8 JavaScript的执行 119
    5.2.9 实践:理解DOM树 120
    5.3 DOM的事件机制    121
    5.3.1 事件的工作过程   122
    5.3.2 WebKit的事件处理机制 123
    5.3.3 实践:事件的传递机制    125
    5.4 影子(Shadow)DOM   127
    5.4.1 什么是影子DOM  127
    5.4.2 WebKit的支持 128
    5.4.3 实践:使用影子DOM    129
第6章 CSS解释器和样式布局 131
    6.1 CSS基本功能 131
    6.1.1 简介    131
    6.1.2 样式规则  134
    6.1.3 选择器   135
    6.1.4 框模型   136
    6.1.5 包含块(Containing Block)模型   139
    6.1.6 CSS样式属性   139
    6.1.7 CSSOM(CSS Object Model)   140
    6.1.8 实践:理解CSSOM和选择器    141
    6.2 CSS解释器和规则匹配 143
    6.2.1 样式的WebKit表示类  143
    6.2.2 解释过程  146
    6.2.3 样式规则匹配    148
    6.2.4 实践:样式匹配   149
    6.2.5 JavaScript设置样式    151
    6.3 WebKit布局    152
    6.3.1 基础    152
    6.3.2 布局计算  153
    6.3.3 布局测试  155
第7章 渲染基础    157
    7.1 RenderObject树   157
    7.1.1 RenderObject基础类   157
    7.1.2 RenderObject树 162
    7.2 网页层次和RenderLayer树   163
    7.2.1 层次和RenderLayer对象  163
    7.2.2 构建RenderLayer树    165
    7.3 渲染方式    167
    7.3.1 绘图上下文(GraphicsContext)    167
    7.3.2 渲染方式  169
    7.4 WebKit软件渲染技术    172
    7.4.1 软件渲染过程    172
    7.4.2 Chromium的多进程软件渲染技术    177
    7.4.3 实践:软件渲染过程 180
第8章 硬件加速机制  183
    8.1 硬件加速基础  183
    8.1.1 概念    183
    8.1.2 WebKit硬件加速设施  185
    8.1.3 硬件渲染过程    189
    8.1.4 3D图形上下文   193
    8.2 Chromium的硬件加速机制 194
    8.2.1 GraphicsLayer的支持  194
    8.2.2 框架    196
    8.2.3 命令缓冲区 200
    8.2.4 Chromium合成器(Chromium Compositor)  202
    8.2.5 实践:减少重绘   213
    8.3 其他硬件加速模块    216
    8.3.1 2D图形的硬件加速机制   216
    8.3.2 WebGL 223
    8.3.3 CSS 3D变形  228
    8.3.4 其他    229
    8.3.5 实践:Chromium的支持    229
第9章 JavaScript引擎    231
    9.1 概述  231
    9.1.1 JavaScript语言  231
    9.1.2 JavaScript引擎  238
    9.1.3 JavaScript引擎和渲染引擎 241
    9.2 V8引擎    242
    9.2.1 基础    242
    9.2.2 工作原理  246
    9.2.3 绑定和扩展 258
    9.3 JavaScriptCore引擎    259
    9.3.1 原理    259
    9.3.2 架构和模块 259
    9.3.4 内存管理  265
    9.3.5 绑定    266
    9.3.6 比较JavaScriptCore和V8   266
    9.4 实践——高效的JavaScript代码 266
    9.4.1 编程方式  266
    9.4.2 例子    268
    9.4.3 未来    271
第10章 插件和JavaScript扩展    273
    10.1 NPAPI插件    274
    10.1.1 NPAPI简介  274
    10.1.2 WebKit和Chromium的实现   275
    10.2 Chromium PPAPI插件   284
    10.2.1 原理   284
    10.2.2 结构和接口    285
    10.2.3 工作过程 288
    10.2.4 Native Client    294
    10.3 JavaScript引擎的扩展机制  297
    10.3.1 混合编程 297
    10.3.2 JavaScript扩展机制   299
    10.4 Chromium扩展机制   303
    10.4.1 原理   303
    10.4.2 基本设施 306
    10.4.3 消息传递机制   309
第11章 多媒体    311
    11.1 HTML5的多媒体支持    311
    11.2 视频 313
    11.2.1 HTML5视频  313
    11.2.2 WebKit基础设施   315
    11.2.3 Chromium视频机制 317
    11.2.4 字幕   328
    11.2.5 视频扩展 330
    11.3 音频 331
    11.3.1 音频元素 331
    11.3.2 Web Audio    334
    11.3.3 MIDI和Web MIDI    336
    11.3.4 Web Speech   337
    11.4 WebRTC 339
    11.4.1 历史   339
    11.4.2 原理和规范    341
    11.4.3 实践——一个WebRTC例子   342
    11.4.4 WebKit和Chromium的实现   345
第12章 安全机制   353
    12.1 网页安全模型 353
    12.1.1 安全模型基础   353
    12.1.2 WebKit的实现    363
    12.2 沙箱模型   366
    12.2.1 原理   366
    12.2.2 实现机制 367
第13章 移动WebKit   373
    13.1 触控和手势事件    373
    13.1.1 HTML5规范  373
    13.1.2 工作原理 377
    13.1.3 启示和实践    381
    13.2 移动化用户界面    382
    13.3 其他机制   384
    13.3.1 新渲染机制    384
    13.3.2 其他机制 387
第14章 调试机制   389
    14.1 Web Inspector  389
    14.1.1 基本原理 389
    14.1.2 协议   391
    14.1.3 WebKit内部机制   395
    14.1.4 Chromium开发者工具    398
    14.1.5 远程调试 400
    14.1.6 Chromium Tracing机制   402
    14.2 实践——基础和性能调试    404
    14.2.1 基础调试 404
    14.2.2 性能调试 408
第15章 Web前端的未来   411
    15.1 趋势 411
    15.2 嵌入式应用模式    414
    15.2.1 嵌入式模式    414
    15.2.2 CEF  414
    15.2.3 Android WebView  417
    15.3 Web应用和Web运行环境  419
    15.3.1 Web应用    419
    15.3.2 Web运行环境  421
    15.4 Cordova项目  423
    15.5 Crosswalk项目    425
    15.6 Chromium OS和Chrome的Web应用   429
    15.6.1 基本原理 429
    15.6.2 其他Web操作系统    431
参考资料    435

下载地址

WebKit技术内幕朱永盛

下载地址: