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 statische Methode WebAssembly.Module.exports()
gibt ein Array zurück, das Beschreibungen aller deklarierten Exporte des gegebenen Module
enthält.
Syntax
WebAssembly.Module.exports(module)
Parameter
module
-
Ein
WebAssembly.Module
Objekt.
Rückgabewert
Ein Array, das Objekte enthält, die die exportierten Funktionen des gegebenen Moduls repräsentieren.
Ausnahmen
Wenn das Modul kein WebAssembly.Module
Objektinstanz 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 auch)
kompiliert den geladenen simple.wasm-Bytecode mit der Methode WebAssembly.compileStreaming()
und sendet ihn dann mittels postMessage() an einen Worker.
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 und richten dann einen Ereignis-Handler ein, um das Modul vom Hauptthread zu empfangen. Wenn das Modul empfangen wird, erstellen wir eine Instanz davon mit der Methode WebAssembly.Instantiate()
, rufen eine exportierte Funktion darin auf und zeigen dann, wie wir Informationen über die verfügbaren Exporte in einem Modul 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 so aus:
{ "name": "exported_func", "kind": "function" }
Spezifikationen
Specification |
---|
WebAssembly JavaScript Interface # dom-module-exports |