Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
WebAssembly.Module()
Baseline Widely available *
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis octobre 2017.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
Un objetWebAssembly.Module contient du code WebAssembly, sans état et qui a déjà été compilé par le navigateur. Ce code peut êtrepartagé avec desweb workers et être instancié à plusieurs reprises.
Dans cet article
Constructeur
WebAssembly.Module()Crée un nouvel objet
Module.
Propriétés statiques
WebAssembly.Module.customSections()Soit un objet
Moduleet 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é à unworker
Dans l'exemple qui suit (voir le fichier sourceindex-compile.html sur GitHub, etla démonstration correspondante), on compile le byte code chargésimple.wasm en utilisant la méthodeWebAssembly.compileStreaming() puis en envoyant l'instance deModule résultante à unworker en utilisantpostMessage().
let worker = new Worker("wasm_worker.js");WebAssembly.compileStreaming(fetch("simple.wasm")).then((mod) => worker.postMessage(mod),);Au sein duworker (voir le fichierwasm_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éthodeWebAssembly.instantiate() puis on appelle une fonction exportée depuis l'instance.
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> |