WebKit技術內幕

WebKit技術內幕

《WebKit技術內幕》是2014年電子工業出版社出版的圖書,作者是朱永盛。

內容簡介

《WebKit技術內幕》從HTML5的基礎知識入手,重點闡述目前套用最廣的渲染引擎項目——WebKit。不僅著眼於系統描述WebKit 內部渲染HTML 網頁的原理,並基於Chromium 的實現,向讀者傳授實現高性能Web 前端開發所需的寶貴經驗。

《WebKit技術內幕》首先從總體上描述WebKit 架構和組成,而後涵蓋Web 前端和所有與之相關的重要技術,包括網路、資源載入、HTML 和CSS 解析、渲染樹、布局、硬體加速、JavaScript 引擎、多媒體、移動支持、外掛程式機制、安全機制、調試和最新的Web 平台等。對於每一項技術,在介紹基本含義之上,詳細分析WebKit 內部的工作原理,進而從實踐角度道出由此帶來的Web 前端開發啟示 。

作者簡介

朱永盛,Chromium項目Committer,2006年從南京大學畢業後就職於英特爾亞太研發有限公司,專注於HTML5、WebKit和Chromium等方面技術,參與過多個瀏覽器和Web運行環境項目,並向業界大會和技術愛好者做過多次技術分享。2013年開始初創Android系統上的Web運行環境的開源項目——Crosswalk。

目錄

第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

相關詞條

相關搜尋

熱門詞條

聯絡我們