本文目录结构
如何在 JS 中使用 .wasm 文件
假设你已经有一个.wasm 模块
我们在这里假设您已经有一个.wasm 模块,无论是从 C / C ++ 程序编译还是直接从 s-exprs 汇编。
加载并运行
尽管将来有计划允许像使用 ES6 模块一样加载 WebAssembly 模块(使用
但 WebAssembly 当前必须由 JavaScript 加载和编译。
对于基本加载,分三个步骤:将 .wasm 字节获取到类型化数组中,或者 ArrayBuffer
将字节编译成 WebAssembly.Module
实例化 WebAssembly.Moduleimport 以获得可调用的导出
让我们更详细地讨论这些步骤。第一步,有很多方法可以获取类型化的数组或 ArrayBuffer 字节:在网络上,使用 XHR 或 fetch,File 从 IndexedDB 检索,甚至直接在 JavaScript 中合成。
下一步是使用异步函数编译字节,该函数 WebAssembly.compile 返回一个解析为 a 的 Promise WebAssembly.Module。甲 Module 对象是无状态的支撑结构克隆这意味着经编译的代码可被存储在索引资料和 / 或经由窗口和工人之间共享 postMessage。
最后一步就是实例的 Module 通过构造一个新的 WebAssembly.Instance 超车 Module 和被请求的任何进口 Module。 Instance 对象就像函数闭包,将代码与环境配对,并且不能结构化克隆。
我们可以将最后两个步骤合并为一个 instantiate 操作&#x