WebAssembly.Module
Baseline 广泛可用 *
WebAssembly.Module
对象包含已由浏览器编译的无状态 WebAssembly 代码 — 这可以被 高效地与 Workers 共享,并可以实例化多次。
注意: WebAssembly.Module
对象与 Emscripten 中使用的 Module
对象无关。
构造函数
WebAssembly.Module()
-
创建一个新的
Module
对象。
静态方法
WebAssembly.Module.customSections()
-
给定一个
Module
和字符串,返回该模块中具有给定字符串名称的所有自定义节内容的副本。 WebAssembly.Module.exports()
-
给定一个
Module
,返回一个包含所有已声明导出项描述的数组。 WebAssembly.Module.imports()
-
给定一个
Module
,返回一个包含所有已声明导入项描述的数组。
示例
将编译后的模块发送到 worker
以下示例使用 WebAssembly.compileStreaming()
方法编译加载的 simple.wasm
字节码,并使用 postMessage()
将生成的 Module
实例发送给一个 worker。
请查看 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 接口 # 模块 |
浏览器兼容性
加载中…