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 WebAssembly.Module.exports()
statische Methode gibt ein
Array zurück, das Beschreibungen aller deklarierten Exporte des angegebenen
Module
enthält.
Syntax
WebAssembly.Module.exports(module)
Parameter
module
-
Ein
WebAssembly.Module
Objekt.
Rückgabewert
Ein Array, das Objekte repräsentiert, die die exportierten Funktionen des angegebenen Moduls darstellen.
Ausnahmen
Wenn module
keine Instanz eines WebAssembly.Module
Objekts 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)
kompiliert den geladenen simple.wasm
Bytecode mit der
WebAssembly.compileStreaming()
Methode und sendet ihn dann an einen Worker mit postMessage().
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, dann richten wir einen Ereignishandler ein, um das Modul vom Haupt-Thread zu empfangen. Wenn das Modul empfangen wird, erstellen wir eine
Instanz daraus mit der WebAssembly.Instantiate()
Methode, rufen eine
exportierte Funktion daraus auf und zeigen, wie wir Informationen über die
verfügbaren Exporte eines Moduls mit WebAssembly.Module.exports
zurückgeben können.
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 folgendermaßen aus:
{ name: "exported_func", kind: "function" }
Spezifikationen
Specification |
---|
WebAssembly JavaScript Interface # dom-module-exports |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- WebAssembly Übersichtsseite
- WebAssembly-Konzepte
- Verwendung der WebAssembly JavaScript API