WebAssembly.Module.exports()

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.

Die WebAssembly.Module.exports() statische Methode gibt ein Array zurück, das Beschreibungen aller deklarierten Exporte des angegebenen Module enthält.

Syntax

js
WebAssembly.Module.exports(module)

Parameter

Rückgabewert

Ein Array, das Objekte enthält, die die exportierten Funktionen des angegebenen Moduls darstellen.

Ausnahmen

Wenn das Modul nicht eine Instanz eines WebAssembly.Module Objekts ist, wird ein TypeError ausgelöst.

Beispiele

Verwendung von exports

Das folgende Beispiel (siehe unser index-compile.html Demo auf GitHub, und live ansehen auch) kompiliert den geladenen simple.wasm Bytecode mit der WebAssembly.compileStreaming() Methode und sendet ihn dann an einen worker mit postMessage().

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

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

Im Worker (siehe wasm_worker.js) definieren wir ein Importobjekt für das Modul, dann richten wir einen Ereignishandler ein, um das Modul vom Hauptthread zu empfangen. Sobald das Modul empfangen wird, erstellen wir mit der WebAssembly.Instantiate() Methode eine Instanz davon, rufen eine exportierte Funktion daraus auf und zeigen dann, wie wir Informationen über die verfügbaren Exporte eines Moduls mit WebAssembly.Module.exports zurückgeben können.

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

  const exports = WebAssembly.Module.exports(mod);
  console.log(exports[0]);
};

Die exports[0] Ausgabe sieht so aus:

js
{ name: "exported_func", kind: "function" }

Spezifikationen

Specification
WebAssembly JavaScript Interface
# dom-module-exports

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
exports() static method

Legend

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

Full support
Full support

Siehe auch