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.

La méthode statique WebAssembly.Module.exports() renvoie un tableau qui contient les descriptions des exports déclarés pour un module donné.

Syntaxe

js
WebAssembly.Module.exports(module)

Paramètres

Valeur de retour

Un tableau qui contient des objets représentants les fonctions exportés du module passé en argument.

Exceptions

Si l'argument n'est pas une instance de WebAssembly.Module, une exception TypeError sera levée.

Exemples

Dans l'exemple suivant (basé sur le fichier index-compile.html disponible sur GitHub avec la démonstration correspondante), on compile le bytecode simple.wasm grâce à la fonction WebAssembly.compileStreaming() puis on envoie le résultat à un worker grâce à la méthode postMessage().

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

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

Dans le worker (cf. wasm_worker.js), on définit un objet d'import pour le module puis on paramètre un gestionnaire d'évènement afin de recevoir le module depuis le thread principal. Lorsqu'on reçoit le module, on en crée une instance via la méthode WebAssembly.Instantiate() puis on appelle une fonction exportée et enfin, on affiche les informations relatives aux exports disponibles grâce à WebAssembly.Module.exports.

js
const importObject = {
  imports: {
    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]);
};

La valeur exports[0] ressemblera alors à :

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

Spécifications

Specification
WebAssembly JavaScript Interface
# dom-module-exports

Compatibilité des navigateurs

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

Voir aussi