GeezerVison is showing developer.mozilla.org — WebAssembly.compile() - WebAssembly | MDN
WebAssembly.compile()
Baseline
Weitgehend verfügbar
*
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Oktober 2017 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Die statische Methode WebAssembly.compile() kompiliert WebAssembly-Binärcode in ein WebAssembly.Module-Objekt.
Diese Funktion ist nützlich, wenn ein Modul kompiliert werden muss, bevor es instanziiert werden kann (andernfalls sollte die Funktion WebAssembly.instantiate() verwendet werden).
Hinweis:
Webseiten, die eine strikte Content Security Policy (CSP) haben, könnten das Kompilieren und Ausführen von WebAssembly-Modulen blockieren.
Weitere Informationen zum Zulassen der WebAssembly-Kompilierung und -Ausführung finden Sie unter dem script-src CSP.
js
WebAssembly.compile(bufferSource)
WebAssembly.compile(bufferSource, compileOptions)
Ein Promise, das sich zu einem WebAssembly.Module-Objekt auflöst und das kompilierte Modul darstellt.
Im folgenden Beispiel wird der geladene einfache Wasm-Bytecode mit der Funktion compile() kompiliert und dann mit postMessage() an einen Worker gesendet.
js
const worker = new Worker("wasm_worker.js");
fetch("simple.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => WebAssembly.compile(bytes))
.then((mod) => worker.postMessage(mod));
Dieses Beispiel aktiviert JavaScript-String-Builtins und importierte globale String-Konstanten, wenn das Wasm-Modul mit compile() kompiliert wird, bevor es mit instantiate() instanziiert und anschließend die exportierte main()-Funktion (die "hello world!" auf die Konsole schreibt) ausgeführt wird. Siehe es live in Aktion.
js
const importObject = {
// Regular import
m: {
log: console.log,
},
};
const compileOptions = {
builtins: ["js-string"], // Enable JavaScript string builtins
importedStringConstants: "string_constants", // Enable imported global string constants
};
fetch("log-concat.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => WebAssembly.compile(bytes, compileOptions))
.then((module) => WebAssembly.instantiate(module, importObject))
.then((instance) => instance.exports.main());