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

另請參閱