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 表格僅在瀏覽器中載入