新到貨2本75折
WebAssembly實戰

WebAssembly實戰

  • 定價:779
  • 優惠價:87678
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

在人們極力渴求提高JavaScript性能的情況下,WebAssembly應運而生,現已得到所有主流Web流覽器的支持。由於其卓越的性能和可攜性,WebAssembly也被用於Web流覽器之外的許多場景。本書圍繞WebAssembly技術棧介紹如何通過C、C++等語言編寫高性能的流覽器端應用程式。你將掌握WebAssembly的基礎知識,學習如何創建原生WebAssembly模組,與JavaScript元件交互,使用WebAssembly文本格式進行調試,並利用多執行緒支持機制。
 

作者介紹

C.杰勒德.加倫特(C. Gerard Gallant)
 
微軟認證專家,Dovico公司高級軟體工程師,DZone技術網站專欄作者。
 

目錄

第 一部分 起步
第 1 章 初識WebAssembly 2
1.1 WebAssembly是什麼 2
1.1.1 WebAssembly的先驅:asm.js 3
1.1.2 從asm.js到MVP 3
1.2 WebAssembly解決了哪些問題 4
1.2.1 性能改進 4
1.2.2 比JavaScript更快的啟動速度 5
1.2.3 可以在流覽器中使用JavaScript之外的語言 5
1.2.4 代碼複用的機會 5
1.3 WebAssembly的工作原理 6
1.3.1 編譯器工作原理概覽 6
1.3.2 模組的載入、編譯和產生實體 8
1.4 WebAssembly 模組的結構 9
1.4.1 前導 10
1.4.2 已知段 10
1.4.3 自訂段 10
1.5 WebAssembly文本格式 10
1.6 WebAssembly如何獲得安全性 11
1.7 哪些語言可用來創建WebAssembly模組 11
1.8 我的模組可以用在何處 12
1.9 小結 13
第 2 章 初探WebAssembly模組內部 14
2.1 已知段 15
2.2 自訂段 18
2.3 小結 19
第 3 章 創建自己的第 一個WebAssembly模組 20
3.1 Emscripten工具包 20
3.2 WebAssembly模組 21
3.3 Emscripten輸出選項 23
3.4 用Emscripten編譯C/C++並使用HTML範本 24
3.5 讓Emscripten生成JavaScript plumbing代碼 29
3.5.1 用Emscripten生成的JavaScript編譯C/C++ 30
3.5.2 創建一個供流覽器使用的基本HTML網頁 32
3.6 讓Emscripten只生成WebAssembly檔 35
3.6.1 用Emscripten將C/C++編譯為副模組 36
3.6.2 流覽器中的載入與產生實體 38
3.7 功能檢測:如何測試WebAssembly是否可用 44
3.8 現實用例 45
3.9 練習 46
3.10 小結 46

第二部分 使用模組
第 4 章 複用現有C++代碼庫 48
4.1 用C/C++創建帶Emscripten plumbing的模組 50
4.1.1 修改C++代碼 50
4.1.2 將代碼編譯為WebAssembly模組 55
4.1.3 創建網頁 56
4.1.4 創建與模組交互的JavaScript代碼 57
4.1.5 查看結果 62
4.2 用C/C++創建不使用Emscripten的模組 63
4.2.1 修改C++代碼 64
4.2.2 將代碼編譯為WebAssembly模組 69
4.2.3 創建與模組交互的JavaScript代碼 69
4.2.4 查看結果 74
4.3 現實用例 74
4.4 練習 74
4.5 小結 75
第 5 章 創建調用JavaScript的WebAssembly模組 76
5.1 用C/C++創建帶Emscripten plumbing的模組 78
5.1.1 調整C++代碼 79
5.1.2 創建將要包含到Emscripten生成的JavaScript檔中的JavaScript代碼 81
5.1.3 將代碼編譯為WebAssembly模組 82
5.1.4 調整網頁的JavaScript代碼 83
5.1.5 查看結果 86
5.2 用C/C++創建不帶Emscripten plumbing的模組 86
5.2.1 C++修改 88
5.2.2 將代碼編譯為WebAssembly模組 89
5.2.3 調整將與模組交互的JavaScript代碼 90
5.2.4 查看結果 92
5.3 現實用例 93
5.4 練習 93
5.5 小結 93
第 6 章 創建通過函數指標與JavaScript交流的WebAssembly模組 95
6.1 用C/C++創建帶Emscripten plumbing的模組 96
6.1.1 使用JavaScript傳給模組的函數指標 96
6.1.2 調整C++代碼 97
6.1.3 將代碼編譯為WebAssembly模組 101
6.1.4 調整網頁JavaScript代碼 102
6.1.5 查看結果 107
6.2 用C/C++創建不帶Emscriptenplumbing的模組 108
6.2.1 使用JavaScript傳給模組的函數指標 109
6.2.2 修改C++代碼 109
6.2.3 將代碼編譯為WebAssembly模組 110
6.2.4 調整與模組交互的JavaScript 111
6.2.5 查看結果 119
6.3 現實用例 119
6.4 練習 120
6.5 小結 120

第三部分 高級主題
第 7 章 動態連結:基礎 122
7.1 動態連結:優點與缺點 123
7.2 動態連結選項 123
7.2.1 副模組與主模組 124
7.2.2 動態連結:dlopen 125
7.2.3 動態連結:dynamicLibraries 133
7.2.4 動態連結:WebAssembly JavaScript API 137
7.3 動態連結回顧 143
7.4 現實用例 144
7.5 練習 144
7.6 小結 144
第 8 章 動態連結:實現 145
8.1 創建WebAssembly模組 147
8.1.1 將文件validate.cpp中的邏輯分割為兩個檔 149
8.1.2 為Place Order表邏輯創建新的C++檔 151
8.1.3 用Emscripten生成WebAssembly副模組 154
8.1.4 定義一個JavaScript函數來處理驗證問題 158
8.1.5 用Emscripten生成WebAssembly主模組 158
8.2 調整網頁 160
8.2.1 調整網頁的JavaScript代碼 163
8.2.2 查看結果 171
8.3 現實用例 172
8.4 練習 172
8.5 小結 173
第9 章 執行緒:Web worker與pthread 174
9.1 Web worker的好處 175
9.2 使用Web worker的考量 176
9.3 用Web worker預取WebAssembly模組 176
9.3.1 調整calculate_primes邏輯 178
9.3.2 用Emscripten生成WebAssembly檔 180
9.3.3 複製檔到正確位置 180
9.3.4 為網頁創建HTML 文件 181
9.3.5 為網頁創建JavaScript文件 182
9.3.6 創建Web worker的JavaScript文件 184
9.3.7 查看結果 185
9.4 使用pthread 186
9.4.1 調整calculate_primes邏輯以創建並使用4個pthread執行緒 187
9.4.2 用Emscripten生成WebAssembly檔 190
9.4.3 查看結果 191
9.5 現實用例 193
9.6 練習 194
9.7 小結 194
第 10 章 Node.js中的WebAssembly模組 195
10.1 回顧前面所學內容 196
10.2 伺服器端驗證 196
10.3 使用Emscripten創建模組 197
10.3.1 載入WebAssembly模組 198
10.3.2 調用WebAssembly模組內函數 199
10.3.3 調入JavaScript代碼 202
10.3.4 調用JavaScript函數指標 204
10.4 使用WebAssembly JavaScript API 206
10.4.1 載入並產生實體WebAssembly模組 207
10.4.2 調用WebAssembly模組內函數 208
10.4.3 WebAssembly模組調入JavaScript代碼 212
10.4.4 WebAssembly模組調用JavaScript函數指標 215
10.5 現實用例 218
10.6 練習 219
10.7 小結 219

第四部分 調試與測試
第 11 章 WebAssembly文本格式 222
11.1 用WebAssembly文本格式創建遊戲的核心邏輯 225
11.1.1 模組段 225
11.1.2 注釋 227
11.1.3 函數簽名 227
11.1.4 module節點 228
11.1.5 import節點 229
11.1.6 global節點 232
11.1.7 export節點 233
11.1.8 start節點 234
11.1.9 code節點 235
11.1.10 type節點 252
11.1.11 data節點 254
11.2 從文本格式生成WebAssembly模組 255
11.3 Emscripten生成模組 256
11.3.1 創建C++文件 256
11.3.2 生成WebAssembly模組 257
11.4 創建HTML和JavaScript文件 258
11.4.1 修改HTML檔 258
11.4.2 創建JavaScript文件 260
11.5 查看結果 265
11.6 現實用例 265
11.7 練習 265
11.8 小結 266
第 12 章 調試 267
12.1 擴展遊戲 268
12.2 調整HTML代碼 269
12.3 顯示試驗次數 270
12.3.1 JavaScript函數generateCards 271
12.3.2 調整文本格式 272
12.3.3 生成Wasm檔 272
12.3.4 測試修改 274
12.4 增加試驗次數 275
12.4.1 JavaScript函數updateTriesTotal 276
12.4.2 調整文本格式 277
12.4.3 生成Wasm檔 278
12.4.4 測試修改 279
12.5 更新總結螢幕 286
12.5.1 JavaScript函數levelComplete 287
12.5.2 調整文本格式 288
12.5.3 生成Wasm檔 289
12.5.4 測試修改 290
12.6 練習 290
12.7 小結 291
第 13 章 測試——然後呢 292
13.1 安裝JavaScript測試框架 293
13.1.1 文件package.json 294
13.1.2 安裝Mocha和Chai 295
13.2 創建並運行測試 295
13.2.1 編寫測試 296
13.2.2 從命令列運行測試 299
13.2.3 載入測試的HTML頁面 300
13.2.4 從流覽器運行測試 302
13.2.5 讓測試通過 303
13.3 下一步是什麼 304
13.4 練習 304
13.5 小結 304

附錄A 安裝與工具設置 306
附錄B ccall、cwrap以及直接函式呼叫 314
附錄C Emscripten宏 320
附錄D 練習答案 335
附錄E 文本格式進階 354
 

詳細資料

  • ISBN:9787115561459
  • 規格:平裝 / 368頁 / 16k / 19 x 26 x 1.84 cm / 普通級 / 單色印刷 / 初版
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【科普、飲食、電腦】高寶電子書暢銷書展:人生就是選擇的總和,全展75折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬