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 statische Methode WebAssembly.Module.exports() gibt ein Array zurück, das Beschreibungen aller deklarierten Exporte des gegebenen Module enthält.

Syntax

js
WebAssembly.Module.exports(module)

Parameter

Rückgabewert

Ein Array, das Objekte enthält, die die exportierten Funktionen des gegebenen Moduls repräsentieren.

Ausnahmen

Wenn das Modul kein WebAssembly.Module Objektinstanz 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 auch) kompiliert den geladenen simple.wasm-Bytecode mit der Methode WebAssembly.compileStreaming() und sendet ihn dann mittels postMessage() an einen Worker.

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 und richten dann einen Ereignis-Handler ein, um das Modul vom Hauptthread zu empfangen. Wenn das Modul empfangen wird, erstellen wir eine Instanz davon mit der Methode WebAssembly.Instantiate(), rufen eine exportierte Funktion darin auf und zeigen dann, wie wir Informationen über die verfügbaren Exporte in einem Modul 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 so aus:

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

Spezifikationen

Specification
WebAssembly JavaScript Interface
# dom-module-exports

Browser-Kompatibilität

Siehe auch