
关于本书
本书旨在让你了解什么是WebAssembly、它的工作原理,以及用它能够做什么、不能做什么。你将了解如何根据需要创建WebAssembly模块。本书将从简单示例开始,然后逐步深入高级主题,如动态链接、并行处理以及调试。
目标读者
本书的目标读者是对C或C++、JavaScript和HTML有基本理解的开发者。尽管互联网上有在线的WebAssembly资源,但其中一些已经过时,而且通常并未深入细节或涉及高级主题。本书将以易于学习的形式呈现各种信息,初学者和专家开发者都可以从中受益,从而创建WebAssembly模块并与之交互。
内容结构
本书共有13章,分为4个部分。
第一部分解释了WebAssembly是什么及其工作原理。这一部分也介绍了Emscripten工具包,全书都将用其来创建WebAssembly模块。
● 第1章讨论了WebAssembly是什么、它能解决什么问题,以及它的工作原理,解释了WebAssembly的安全性来源、可用于创建WebAssembly模块的语言,以及使用这些模块的场合。
● 第2章阐释了WebAssembly模块的组织结构,以及模块每一部分的职责。
● 第3章介绍了Emscripten工具包,讲解了创建WebAssembly模块时可用的不同输出选项,还介绍了WebAssembly JavaScript API。
第二部分带领你创建一个WebAssembly模块并在Web浏览器中与之交互。
● 第4章讲解了如何调整已有的C或C++代码库,使其也可以编译为WebAssembly模块。你还将学习为网页编写JavaScript代码,从而与这个模块交互。
● 第5章讲解了如何调整第4章中创建的代码,使得这个WebAssembly模块可以调用网页的JavaScript代码。
● 第6章带领你修改WebAssembly模块,让它可以兼容从JavaScript代码传入的函数指针。这允许JavaScript代码按需指定函数,并使用JavaScript promise。
第三部分介绍了几个高级主题,如动态链接、并行处理,以及如何在非Web浏览器环境中操作WebAssembly模块。
● 第7章介绍了动态链接的基础知识。两个或多个WebAssembly模块可以在运行时通过动态链接合而为一。
● 第8章扩展了第7章所学,介绍如何创建同一个WebAssembly模块的多个实例,并将每个实例按需动态链接到另一个WebAssembly模块。
● 第9章讲解了Web worker和pthread。在这一章中,你可以学到如何使用Web worker在浏览器的一个后台线程中按需预取WebAssembly模块,以及如何在WebAssembly模块中用pthread线程执行并行处理。
● 第10章展示了WebAssembly并不局限于Web浏览器。你将学习如何在Node.js中使用自己的若干WebAssembly模块。
第四部分深入探讨了调试和测试。
● 第11章通过构建一个卡牌匹配游戏,讲解了WebAssembly文本格式。
● 第12章扩展了这个卡牌匹配游戏,以展示调试WebAssembly模块时可用的各种选项。
● 第13章讲解了如何为自己的模块编写集成测试。
每一章都建立在前面章节的内容之上,因此最好按顺序阅读。开发者应该依次阅读第1~3章,以理解WebAssembly是什么、它的工作原理,以及如何使用Emscripten工具包。附录A很重要,你可以利用它来正确设置工具,以跟随本书代码。本书前两部分覆盖了核心概念,其余部分(高级主题和调试主题)可以根据需要阅读。
关于代码
本书包含很多源代码示例,有编号列表形式的,也有嵌入正文之中的。为了区分代码与普通文本,代码以等宽字体表示。另外,如果代码是从前面的示例修改而来,则修改部分以黑体表示。
有时本书展示的代码会换行和缩进以适应页面空间。极少数情况下,如果仍然没有足够的空间,那么会使用续行符(➥)。
可以从Manning出版社网站获得本书源代码,参见www.manning.com/books/webassembly-in-action。1
1读者也可到图灵社区本书中文版主页“随书下载”处下载书中示例源代码。——编者注
本书论坛
购买本书即可免费访问Manning出版社维护的一个私有Web论坛,你可以在该论坛上评论本书、提出技术问题,也可以从作者和其他用户那里获得帮助。
Manning出版社为所有读者提供了一个交流场所,以便读者之间以及读者和作者之间可以进行有意义的对话。论坛并不能确保作者的参与程度,因为他对论坛的贡献仍然是自愿性质的(且是无偿的)。建议你尝试向作者询问一些具有挑战性的问题,以引起对方的兴趣。只要书仍然在版,你就可以在出版社的网站上访问该论坛和相关讨论。2
2读者也可登录图灵社区本书中文版主页,提交反馈意见和勘误。——编者注
其他在线资源
如需更多帮助,可访问以下网站和社区。
● Emscripten官网为许多任务提供了大量文档。
● Emscripten社区非常活跃,发布频繁。如果发现了Emscripten本身的问题,你可以查看是否已经有人提交了bug报告,或者了解如何解决你所遇到的问题。
● Stack Overflow也是一个很棒的网站,你可以在这里提问或帮助他人。
● 本书中文版网址链接请到图灵社区本书页面查看。
更多信息
扫描下方二维码,即可获取电子书相关信息及读者群通道入口。