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.
Ein WebAssembly.Module
-Objekt enthält zustandslosen WebAssembly-Code, der bereits vom Browser kompiliert wurde — dieser kann effizient mit Arbeitern geteilt werden und mehrfach instanziiert werden.
Hinweis: Das WebAssembly.Module
-Objekt ist nicht mit dem Module
-Objekt in Emscripten verwandt.
Konstruktor
WebAssembly.Module()
-
Erstellt ein neues
Module
-Objekt.
Statische Methoden
WebAssembly.Module.customSections()
-
Gibt, basierend auf einem
Module
und einem String, eine Kopie der Inhalte aller benutzerdefinierten Abschnitte im Modul mit dem angegebenen Stringnamen zurück. WebAssembly.Module.exports()
-
Gibt, basierend auf einem
Module
, ein Array mit Beschreibungen aller deklarierten Exporte zurück. WebAssembly.Module.imports()
-
Gibt, basierend auf einem
Module
, ein Array mit Beschreibungen aller deklarierten Importe zurück.
Beispiele
Senden eines kompilierten Moduls an einen Worker
Das folgende Beispiel kompiliert den geladenen simple.wasm
-Bytecode mit der Methode WebAssembly.compileStreaming()
und sendet die resultierende Module
-Instanz mithilfe von postMessage()
an einen Worker.
Siehe den index-compile.html
Quellcode oder sehen Sie ihn live.
const worker = new Worker("wasm_worker.js");
WebAssembly.compileStreaming(fetch("simple.wasm")).then((mod) =>
worker.postMessage(mod),
);
Die Worker-Funktion wasm_worker.js
definiert ein Importobjekt, das das Modul verwenden soll. Die Funktion richtet dann einen Ereignishandler ein, um das Modul aus dem Haupt-Thread zu erhalten. Wenn das Modul empfangen wird, erstellen wir eine Instanz daraus mit der Methode WebAssembly.instantiate()
und rufen eine exportierte Funktion darin auf.
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();
});
};
Spezifikationen
Specification |
---|
WebAssembly JavaScript Interface # modules |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- WebAssembly Übersichtsseite
- WebAssembly-Konzepte
- Verwendung der WebAssembly-JavaScript-API