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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Module
Module() constructor
compileOptions parameter
customSections() static method
exports() static method
imports() static method

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

Siehe auch