展开全部

主编推荐语

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

内容简介

在人们极力渴求提高JavaScript性能的情况下,WebAssembly应运而生,现已得到所有主流Web浏览器的支持。由于其卓越的性能和可移植性,WebAssembly也被用于Web浏览器之外的许多场景。本书围绕WebAssembly技术栈介绍如何通过C、C++等语言编写高性能的浏览器端应用程序。

你将掌握WebAssembly的基础知识,学习如何创建原生WebAssembly模块,与JavaScript组件交互,使用WebAssembly文本格式进行调试,并利用多线程支持机制。

目录

  • 版权信息
  • 前言
  • 致谢
  • 关于本书
  • 关于封面图片
  • 第一部分 起步
  • 第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 函数指针
  • 代码测试
  • 作者简介
展开全部

评分及书评

评分不足
1个评分
  • 用户头像
    给这本书评了
    5.0
    得到怎么什么书都有

    这本的电子版豆瓣上只有得到有... 让人怀疑人生

      转发
      1

    出版方

    人民邮电出版社

    人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。