WebAssembly.Module

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.

* Some parts of this feature may have varying levels of support.

Ein WebAssembly.Module Objekt enthält zustandslosen WebAssembly-Code, der bereits vom Browser kompiliert wurde — dieser kann effizient mit Web-Workern geteilt werden und mehrfach instanziiert werden.

Hinweis: Das WebAssembly.Module Objekt ist nicht verwandt mit dem Module Objekt, das in Emscripten genutzt wird.

Konstruktor

WebAssembly.Module()

Erstellt ein neues Module Objekt.

Statische Methoden

WebAssembly.Module.customSections()

Bei Übergabe eines Module und eines Strings wird eine Kopie aller benutzerdefinierten Abschnitte im Modul mit dem gegebenen Stringnamen zurückgegeben.

WebAssembly.Module.exports()

Bei Übergabe eines Module wird ein Array mit Beschreibungen aller deklarierten Exporte zurückgegeben.

WebAssembly.Module.imports()

Bei Übergabe eines Module wird ein Array mit Beschreibungen aller deklarierten Importe zurückgegeben.

Beispiele

Senden eines kompilierten Moduls an einen Worker

Im folgenden Beispiel wird der geladene simple.wasm Byte-Code mit der Methode WebAssembly.compileStreaming() kompiliert und das resultierende Module-Objekt an einen Worker unter Verwendung von postMessage() gesendet.

Siehe den index-compile.html Quellcode oder sehen Sie es live an.

js
const worker = new Worker("wasm_worker.js");

WebAssembly.compileStreaming(fetch("simple.wasm")).then((mod) =>
  worker.postMessage(mod),
);

Die Worker-Funktion wasm_worker.js definiert ein Importobjekt für die Nutzung durch das Modul. Die Funktion richtet dann einen Ereignishandler ein, um das Modul vom Haupt-Thread zu empfangen. Wenn das Modul empfangen wird, erstellen wir eine Instanz daraus mit der Methode WebAssembly.instantiate() und rufen eine exportierte Funktion daraus auf.

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();
  });
};

Spezifikationen

Specification
WebAssembly JavaScript Interface
# modules

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch