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.

Un objet WebAssembly.Module contient du code WebAssembly, sans état et qui a déjà été compilé par le navigateur. Ce code peut être partagé avec des web workers et être instancié à plusieurs reprises.

Constructeur

WebAssembly.Module()

Crée un nouvel objet Module.

Propriétés statiques

WebAssembly.Module.customSections()

Soit un objet Module et une chaîne de caractères, cette méthode renvoie le contenu de l'ensemble des sections spécifiques du module avec le nom correspondant à la chaîne de caractères.

WebAssembly.Module.exports()

Soit un objet Module, cette méthode renvoie un tableau dont les éléments sont les descriptions de tous les exports déclarés.

WebAssembly.Module.imports()

Soit un objet Module, cette méthode renvoie un tableau dont les éléments sont les descriptions de tous les imports déclarés.

Exemples

Envoyer un module compilé à un worker

Dans l'exemple qui suit (voir le fichier source index-compile.html sur GitHub, et la démonstration correspondante), on compile le byte code chargé simple.wasm en utilisant la méthode WebAssembly.compileStreaming() puis en envoyant l'instance de Module résultante à un worker en utilisant postMessage().

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

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

Au sein du worker (voir le fichier wasm_worker.js), on définit un objet d'import pour le module à utiliser puis on définit un gestionnaire d'évènement destiné à recevoir le module depuis le fil d'exécution principal. Lorsque le module est reçu, on en crée une instance avec la méthode WebAssembly.instantiate() puis on appelle une fonction exportée depuis l'instance.

js
let importObject = {
  imports: {
    imported_func: function (arg) {
      console.log(arg);
    },
  },
};

onmessage = function (e) {
  console.log("module reçu depuis le thread principal");
  let mod = e.data;

  WebAssembly.instantiate(mod, importObject).then(function (instance) {
    instance.exports.exported_func();
  });
};

Spécifications

Specification
WebAssembly JavaScript Interface
# modules

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
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

Voir aussi