WebAssembly实战

WebAssembly实战

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

类似推荐

编辑推荐

抽丝剥茧,逐步解构WebAssembly的复杂生态。

内容简介

本书围绕WebAssembly技术栈介绍如何通过C、C++等语言编写高性能的浏览器端应用程序,掌握WebAssembly的基础知识,学习如何创建原生WebAssembly模块,与JavaScript组件交互,使用WebAssembly文本格式进行调试,并利用多线程支持机制。

作者简介

作者C.杰勒德·加伦特(C.Gerard Gallant),微软认证专家,Dovico公司高级软件工程师,DZone技术网站专栏作者。

章节目录

版权信息

前言

致谢

关于本书

关于封面图片

第一部分 起步

第1章 初识WebAssembly

1.1 WebAssembly是什么

1.1.1 WebAssembly的先驱:asm.js

1.1.2 从asm.js到MVP

1.2 WebAssembly解决了哪些问题

1.2.1 性能改进

1.2.2 比JavaScript更快的启动速度

1.2.3 可以在浏览器中使用JavaScript之外的语言

1.2.4 代码复用的机会

1.3 WebAssembly的工作原理

1.3.1 编译器工作原理概览

1.3.2 模块的加载、编译和实例化

1.4 WebAssembly模块的结构

1.4.1 前导

1.4.2 已知段

1.4.3 自定义段

1.5 WebAssembly文本格式

1.6 WebAssembly如何获得安全性

1.7 哪些语言可用来创建WebAssembly模块

1.8 我的模块可以用在何处

1.9 小结

第2章 初探WebAssembly模块内部

2.1 已知段

2.2 自定义段

2.3 小结

第3章 创建自己的第一个WebAssembly模块

3.1 Emscripten工具包

3.2 WebAssembly模块

何时不应使用WebAssembly模块

3.3 Emscripten输出选项

3.4 用Emscripten编译C/C++并使用HTML模板

3.5 让Emscripten生成JavaScript plumbing代码

3.5.1 用Emscripten生成的JavaScript编译C/C++

3.5.2 创建一个供浏览器使用的基本HTML网页

3.6 让Emscripten只生成WebAssembly文件

3.6.1 用Emscripten将C/C++编译为副模块

3.6.2 浏览器中的加载与实例化

3.7 功能检测:如何测试WebAssembly是否可用

3.8 现实用例

3.9 练习

3.10 小结

第二部分 使用模块

第4章 复用现有C++代码库

4.1 用C/C++创建带Emscripten plumbing的模块

4.1.1 修改C++代码

4.1.2 将代码编译为WebAssembly模块

4.1.3 创建网页

4.1.4 创建与模块交互的JavaScript代码

4.1.5 查看结果

4.2 用C/C++创建不使用Emscripten的模块

4.2.1 修改C++代码

4.2.2 将代码编译为WebAssembly模块

4.2.3 创建与模块交互的JavaScript代码

4.2.4 查看结果

4.3 现实用例

4.4 练习

4.5 小结

第5章 创建调用JavaScript的WebAssembly模块

5.1 用C/C++创建带Emscripten plumbing的模块

5.1.1 调整C++代码

5.1.2 创建将要包含到Emscripten生成的JavaScript文件中的JavaScript代码

5.1.3 将代码编译为WebAssembly模块

5.1.4 调整网页的JavaScript代码

5.1.5 查看结果

5.2 用C/C++创建不带Emscripten plumbing的模块

5.2.1 C++修改

5.2.2 将代码编译为WebAssembly模块

5.2.3 调整将与模块交互的JavaScript代码

5.2.4 查看结果

5.3 现实用例

5.4 练习

5.5 小结

第6章 创建通过函数指针与JavaScript交流的WebAssembly模块

6.1 用C/C++创建带Emscripten plumbing的模块

6.1.1 使用JavaScript传给模块的函数指针

6.1.2 调整C++代码

6.1.3 将代码编译为WebAssembly模块

6.1.4 调整网页JavaScript代码

6.1.5 查看结果

6.2 用C/C++创建不带Emscripten plumbing的模块

6.2.1 使用JavaScript传给模块的函数指针

6.2.2 修改C++代码

6.2.3 将代码编译为WebAssembly模块

6.2.4 调整与模块交互的JavaScript

6.2.5 查看结果

6.3 现实用例

6.4 练习

6.5 小结

第三部分 高级主题

第7章 动态链接:基础

7.1 动态链接:优点与缺点

7.2 动态链接选项

7.2.1 副模块与主模块

7.2.2 动态链接:dlopen

7.2.3 动态链接:dynamicLibraries

7.2.4 动态链接:WebAssembly JavaScript API

7.3 动态链接回顾

7.4 现实用例

7.5 练习

7.6 小结

第8章 动态链接:实现

8.1 创建WebAssembly模块

8.1.1 将文件validate.cpp中的逻辑分割为两个文件

8.1.2 为Place Order表逻辑创建新的C++文件

8.1.3 用Emscripten生成WebAssembly副模块

8.1.4 定义一个JavaScript函数来处理验证问题

8.1.5 用Emscripten生成WebAssembly主模块

8.2 调整网页

8.2.1 调整网页的JavaScript代码

8.2.2 查看结果

8.3 现实用例

8.4 练习

8.5 小结

第9章 线程:Web worker与pthread

9.1 Web worker的好处

9.2 使用Web worker的考量

9.3 用Web worker预取WebAssembly模块

9.3.1 调整calculate_primes逻辑

9.3.2 用Emscripten生成WebAssembly文件

9.3.3 复制文件到正确位置

9.3.4 为网页创建HTML文件

9.3.5 为网页创建JavaScript文件

9.3.6 创建Web worker的JavaScript文件

9.3.7 查看结果

9.4 使用pthread

9.4.1 调整calculate_primes逻辑以创建并使用4个pthread线程

9.4.2 用Emscripten生成WebAssembly文件

9.4.3 查看结果

9.5 现实用例

9.6 练习

9.7 小结

第10章 Node.js中的WebAssembly模块

10.1 回顾前面所学内容

10.2 服务器端验证

10.3 使用Emscripten创建模块

10.3.1 加载WebAssembly模块

10.3.2 调用WebAssembly模块内函数

10.3.3 调入JavaScript代码

10.3.4 调用JavaScript函数指针

10.4 使用WebAssembly JavaScript API

10.4.1 加载并实例化WebAssembly模块

10.4.2 调用WebAssembly模块内函数

10.4.3 WebAssembly模块调入JavaScript代码

10.4.4 WebAssembly模块调用JavaScript函数指针

10.5 现实用例

10.6 练习

10.7 小结

第四部分 调试与测试

第11章 WebAssembly文本格式

11.1 用WebAssembly文本格式创建游戏的核心逻辑

11.1.1 模块段

11.1.2 注释

11.1.3 函数签名

11.1.4 module节点

11.1.5 import节点

11.1.6 global节点

11.1.7 export节点

11.1.8 start节点

11.1.9 code节点

11.1.10 type节点

11.1.11 data节点

11.2 从文本格式生成WebAssembly模块

11.3 Emscripten生成模块

11.3.1 创建C++文件

11.3.2 生成WebAssembly模块

11.4 创建HTML和JavaScript文件

11.4.1 修改HTML文件

11.4.2 创建JavaScript文件

11.5 查看结果

11.6 现实用例

11.7 练习

11.8 小结

第12章 调试

12.1 扩展游戏

12.2 调整HTML代码

12.3 显示试验次数

12.3.1 JavaScript函数generateCards

12.3.2 调整文本格式

12.3.3 生成Wasm文件

12.3.4 测试修改

12.4 增加试验次数

12.4.1 JavaScript函数updateTriesTotal

12.4.2 调整文本格式

12.4.3 生成Wasm文件

12.4.4 测试修改

12.5 更新总结屏幕

12.5.1 JavaScript函数levelComplete

12.5.2 调整文本格式

12.5.3 生成Wasm文件

12.5.4 测试修改

12.6 练习

12.7 小结

第13章 测试——然后呢

13.1 安装JavaScript测试框架

13.1.1 文件package.json

13.1.2 安装Mocha和Chai

13.2 创建并运行测试

13.2.1 编写测试

13.2.2 从命令行运行测试

13.2.3 加载测试的HTML页面

13.2.4 从浏览器运行测试

13.2.5 让测试通过

13.3 下一步是什么

13.4 练习

13.5 小结

附录A 安装与工具设置

A.1 Python

A.1.1 运行本地Web服务器

A.1.2 WebAssembly媒体类型

A.2 Emscripten

A.2.1 下载Emscripten SDK

A.2.2 如果使用Windows

A.2.3 如果使用Mac或Linux

A.2.4 绕过安装问题

A.3 Node.js

A.4 WebAssembly二进制工具包

A.5 Bootstrap

附录B ccall、cwrap以及直接函数调用

B.1 ccall

B.1.1 创建一个简单的WebAssembly模块

B.1.2 创建与WebAssembly模块交流的网页

B.2 cwrap

调整JavaScript代码以使用cwrap

B.3 直接函数调用

B.4 向模块传递数组

附录C Emscripten宏

C.1 宏emscripten_run_script

C.2 宏EM_JS

C.2.1 没有参数值

C.2.2 传递参数值

C.2.3 传递指针作为参数

C.2.4 返回字符串指针

C.3 宏EM_ASM

C.3.1 EM_ASM

C.3.2 EM_ASM_

C.3.3 传递指针作为参数

C.3.4 EM_ASM_INT与EM_ASM_DOUBLE

C.3.5 返回一个字符串指针

附录D 练习答案

D.1 第3章

D.1.1 练习1

D.1.2 练习2

D.2 第4章

D.2.1 练习1

D.2.2 练习2

D.3 第5章

D.3.1 练习1

D.3.2 练习2

D.4 第6章

D.4.1 练习1

D.4.2 练习2

D.5 第7章

D.5.1 练习1

D.5.2 练习2

D.6 第8章

D.6.1 练习1

D.6.2 练习2

D.7 第9章

D.7.1 练习1

D.7.2 练习2

D.8 第10章

D.8.1 练习1

D.8.2 练习2

D.8.3 练习3

D.9 第11章

D.9.1 练习1

D.9.2 练习2

D.10 第12章

D.10.1 练习1

D.10.2 练习2

D.11 第13章

D.11.1 练习1

D.11.2 练习2

附录E 文本格式进阶

E.1 控制流语句

E.1.1 If语句

E.1.2 循环

E.2 函数指针

代码测试

作者简介

WebAssembly实战是2021年由人民邮电出版社出版,作者[加] C.杰勒德·加伦特。

得书感谢您对《WebAssembly实战》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

你可能喜欢
机器学习实战 电子书
《机器学习实战》面向日常任务的高效实战内容,介绍并实现机器学习的主流算法。
Kafka Streams实战 电子书
本书教读者在Kafka平台上实现流式处理。在这本易于理解的书中,读者将通过实际的例子来收集、转换和聚合数据,使用多个处理器,处理实时事件。
AppInventor开发实战 电子书
App Inventor是MIT开发的流行的可视化编程工具,编程爱好者可以在短时间学会创建炫目的安卓手机应用。
ExcelVBA案例实战 电子书
本书以案例讲解的形式,由浅入深地介绍了VBA在Excel中的应用。
HTTP抓包实战 电子书
帮你精通HTTP协议,快速掌握Fiddler抓包和JMeter发包。