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 repräsentiert, die die exportierten Funktionen des angegebenen Moduls darstellen.

Ausnahmen

Wenn module keine 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 sehen Sie es live) 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 Haupt-Thread zu empfangen. Wenn das Modul empfangen wird, erstellen wir eine Instanz daraus mit der WebAssembly.Instantiate() Methode, rufen eine exportierte Funktion daraus auf und zeigen, 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 Ausgabe von exports[0] sieht folgendermaßen aus:

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

Spezifikationen

Specification
WebAssembly JavaScript Interface
# dom-module-exports

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch