WebAssembly.Module
一个 **WebAssembly.Module
** 对象包含已经由浏览器编译的无状态 WebAssembly 代码——这可以高效地 与 Worker 共享,并多次实例化。
注意:WebAssembly.Module
对象与 Emscripten 中使用的 Module
对象无关。
构造函数
WebAssembly.Module()
-
创建一个新的
Module
对象。
静态方法
WebAssembly.Module.customSections()
-
给定一个
Module
和字符串,返回模块中所有具有给定字符串名称的自定义节内容的副本。 WebAssembly.Module.exports()
-
给定一个
Module
,返回一个包含所有已声明导出描述的数组。 WebAssembly.Module.imports()
-
给定一个
Module
,返回一个包含所有已声明导入描述的数组。
示例
将编译后的模块发送到 Worker
以下示例使用 WebAssembly.compileStreaming()
方法编译加载的 simple.wasm
字节码,并将生成的 Module
实例使用 Worker 发送到 postMessage()
。
查看 index-compile.html
源代码 或 在线查看。
js
const worker = new Worker("wasm_worker.js");
WebAssembly.compileStreaming(fetch("simple.wasm")).then((mod) =>
worker.postMessage(mod),
);
Worker 函数 wasm_worker.js
为模块定义了一个导入对象。该函数随后设置一个事件处理程序来接收来自主线程的模块。接收到模块后,我们使用 WebAssembly.instantiate()
方法从中创建实例,并调用其中导出的函数。
js
const importObject = {
my_namespace: {
imported_func(arg) {
console.log(arg);
},
},
};
onmessage = (e) => {
console.log("module received from main thread");
const mod = e.data;
WebAssembly.instantiate(mod, importObject).then((instance) => {
instance.exports.exported_func();
});
};
规范
规范 |
---|
WebAssembly JavaScript 接口 # 模块 |
浏览器兼容性
BCD 表格仅在浏览器中加载