WebAssembly.compile()

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.

* Some parts of this feature may have varying levels of support.

Die statische Methode WebAssembly.compile() kompiliert WebAssembly-Binärcode in ein WebAssembly.Module-Objekt. Diese Funktion ist nützlich, wenn es notwendig ist, ein Modul zu kompilieren, bevor es instanziiert werden kann (ansonsten sollte die Funktion WebAssembly.instantiate() verwendet werden).

Hinweis: Webseiten, die eine strikte Content Security Policy (CSP) haben, könnten WebAssembly daran hindern, Module zu kompilieren und auszuführen. Für mehr Informationen zur Erlaubnis der WebAssembly-Kompilierung und -Ausführung, siehe die script-src CSP.

Syntax

js
WebAssembly.compile(bufferSource)
WebAssembly.compile(bufferSource, compileOptions)

Parameter

bufferSource

Ein typisiertes Array oder ArrayBuffer, das den Binärcode des Wasm-Moduls enthält, das Sie kompilieren möchten.

compileOptions Optional

Ein Objekt, das Kompilierungsoptionen enthält. Eigenschaften können beinhalten:

builtins Optional

Ein Array aus einem oder mehreren Zeichenfolgen, das die Verwendung von JavaScript builtins im kompilierten Wasm-Modul aktiviert. Die Zeichenfolgen definieren die builtins, die Sie aktivieren möchten. Derzeit ist der einzige verfügbare Wert "js-string", der JavaScript-String-builtins ermöglicht.

importedStringConstants Optional

Eine Zeichenfolge, die einen Namensraum für importierte globale Zeichenfolgenkonstanten angibt. Diese Eigenschaft muss angegeben werden, wenn Sie importierte globale Zeichenfolgenkonstanten im Wasm-Modul verwenden möchten.

Rückgabewert

Ein Promise, das sich zu einem WebAssembly.Module-Objekt auflöst, das das kompilierte Modul darstellt.

Ausnahmen

Beispiele

Verwendung von compile

Das folgende Beispiel kompiliert den geladenen simple.wasm-Bytecode mit der Funktion compile() und sendet ihn dann über postMessage() an einen Arbeiter.

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));

Hinweis: In den meisten Fällen möchten Sie wahrscheinlich WebAssembly.compileStreaming() verwenden, da es effizienter als compile() ist.

JavaScript builtins und globale Zeichenfolgenimporte aktivieren

Dieses Beispiel aktiviert JavaScript-String-builtins und importierte globale Zeichenfolgenkonstanten, wenn das Wasm-Modul mit compile() kompiliert wird, bevor es mit instantiate() instanziiert wird und dann die exportierte main()-Funktion ausgeführt wird (die "hello world!" in die Konsole protokolliert). Sehen Sie es live laufen.

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());

Spezifikationen

Specification
WebAssembly JavaScript Interface
# dom-webassembly-compile

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
compile() static method
compileOptions parameter

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

Siehe auch