内容介绍:
抽丝剥茧,逐步解构 WebAssembly 的复杂生态
突破 JavaScript 瓶颈,让 C/C++ 代码快速运行于浏览器端
边学边练,配套练习答案帮你熟练掌握 WebAssembly
◎ 编辑推荐
WebAssembly是可移植、体积小、加载快并且兼容Web浏览器的全新类汇编语言格式,其具有高效、安全、开放、标准等特性。使用WebAssembly,你能够不再依赖JavaScript编写基于浏览器的高性能应用程序。通过编译为WebAssembly二进制格式,你的C/C++代码或Rust代码都可以在浏览器中以接近原生的速度运行。
本书介绍如何使用C/C++语言和Emscripten工具包编写并运行高性能的Web应用程序。你将学习如何创建原生WebAssembly模块、如何与JavaScript组件交互,以及如何使用Web worker和pthread最大限度地提高性能。
多个模块在运行时的动态链接
模块与JavaScript之间的通信
利用WebAssembly文本格式进行调试
利用Web worker和pthread进行多线程编程
◎ 内容简介
在人们极力渴求提高JavaScript性能的情况下,WebAssembly应运而生,现已得到所有主流Web浏览器的支持。由于其卓越的性能和可移植性,WebAssembly也被用于Web浏览器之外的许多场景。
本书围绕WebAssembly技术栈介绍如何通过C、C++等语言编写高性能的浏览器端应用程序。你将掌握WebAssembly的基础知识,学习如何创建原生WebAssembly模块,与JavaScript组件交互,使用WebAssembly文本格式进行调试,并利用多线程支持机制。
本书目录:
第一部分 起步
第 1 章 初识WebAssembly 2
1.1 WebAssembly是什么 2
1.2 WebAssembly解决了哪些问题 4
1.3 WebAssembly的工作原理 6
1.4 WebAssembly 模块的结构 9
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.6 让Emscripten只生成WebAssembly文件 35
3.7 功能检测:如何测试WebAssembly是否可用 44
3.8 现实用例 45
3.9 练习 46
3.10 小结 46
第二部分 使用模块
第 4 章 复用现有C++代码库 48
4.1 用C/C++创建带Emscripten plumbing的模块 50
4.2 用C/C++创建不使用Emscripten的模块 63
4.3 现实用例 74
4.4 练习 74
4.5 小结 75
第 5 章 创建调用JavaScript的WebAssembly模块 76
5.1 用C/C++创建带Emscripten plumbing的模块 78
5.2 用C/C++创建不带Emscripten plumbing的模块 86
5.3 现实用例 93
5.4 练习 93
5.5 小结 93
第 6 章 创建通过函数指针与JavaScript交流的WebAssembly模块 95
6.1 用C/C++创建带Emscripten plumbing的模块 96
6.2 用C/C++创建不带Emscriptenplumbing的模块 108
6.3 现实用例 119
6.4 练习 120
6.5 小结 120
第三部分 高级主题
第 7 章 动态链接:基础 122
7.1 动态链接:优点与缺点 123
7.2 动态链接选项 123
7.3 动态链接回顾 143
7.4 现实用例 144
7.5 练习 144
7.6 小结 144
第 8 章 动态链接:实现 145
8.1 创建WebAssembly模块 147
8.2 调整网页 160
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.4 使用pthread 186
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.4 使用WebAssembly JavaScript API 206
10.5 现实用例 218
10.6 练习 219
10.7 小结 219
第四部分 调试与测试
第 11 章 WebAssembly文本格式 222
11.1 用WebAssembly文本格式创建游戏的核心逻辑 225
11.2 从文本格式生成WebAssembly模块 255
11.3 Emscripten生成模块 256
11.4 创建HTML和JavaScript文件 258
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.4 增加试验次数 275
12.5 更新总结屏幕 286
12.6 练习 290
12.7 小结 291
第 13 章 测试——然后呢 292
13.1 安装JavaScript测试框架 293
13.2 创建并运行测试 295
13.3 下一步是什么 304
13.4 练习 304
13.5 小结 304
附录A 安装与工具设置 306
附录B ccall、cwrap以及直接函数调用 314
附录C Emscripten宏 320
附录D 练习答案 335
附录E 文本格式进阶 354
· · · · · · (更多)