WebAssembly.Module() Konstruktor
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.
Ein WebAssembly.Module()
Konstruktor erstellt ein neues Modulobjekt, das zustandslosen WebAssembly-Code enthält, der bereits vom Browser kompiliert wurde und effizient mit Workern geteilt und mehrfach instanziiert werden kann.
Die WebAssembly.Module()
Konstruktorfunktion kann aufgerufen werden, um synchron gegebenen WebAssembly-Binärcode zu kompilieren. Der primäre Weg, ein Module
zu erhalten, ist jedoch über eine asynchrone Kompilierungsfunktion wie WebAssembly.compile()
.
Hinweis: Webseiten, die eine strikte Content Security Policy (CSP) haben, könnten WebAssembly daran hindern, Module zu kompilieren und auszuführen. Weitere Informationen zum Zulassen der Kompilierung und Ausführung von WebAssembly finden Sie unter script-src CSP.
Syntax
Warnung:
Da die Kompilierung großer Module teuer sein kann,
sollten Entwickler den Module()
-Konstruktor nur verwenden, wenn eine synchrone
Kompilierung absolut erforderlich ist; die asynchrone
Methode WebAssembly.compileStreaming()
sollte zu allen anderen Zeiten verwendet werden.
new WebAssembly.Module(bufferSource)
new WebAssembly.Module(bufferSource, compileOptions)
Parameter
bufferSource
-
Ein typisiertes Array oder ein ArrayBuffer, das den Binärcode des zu kompilierenden Wasm-Moduls enthält.
compileOptions
Optional-
Ein Objekt, das Kompilierungsoptionen enthält. Eigenschaften können beinhalten:
builtins
Optional-
Ein Array von Strings, das die Nutzung von JavaScript-Builtins im kompilierten Wasm-Modul ermöglicht. Die Strings 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-
Ein String, der einen Namensraum für importierte globale String-Konstanten angibt. Diese Eigenschaft muss angegeben werden, wenn Sie importierte globale String-Konstanten im Wasm-Modul verwenden möchten.
Ausnahmen
- Wenn der Parameter nicht den richtigen Typ oder die richtige Struktur hat, wird ein
TypeError
ausgelöst. - Wenn die Kompilierung fehlschlägt, lehnt der Konstruktor mit einem
WebAssembly.CompileError
ab. - Einige Browser können einen
RangeError
auslösen, da sie die Kompilierung und Instanziierung von Wasm mit großen Buffern im UI-Thread verbieten.
Beispiele
Synchrone Kompilierung eines WebAssembly-Moduls
const importObject = {
my_namespace: {
imported_func(arg) {
console.log(arg);
},
},
};
function createWasmModule(bytes) {
return new WebAssembly.Module(bytes);
}
fetch("simple.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => {
const mod = createWasmModule(bytes);
WebAssembly.instantiate(mod, importObject).then((result) =>
result.exports.exported_func(),
);
});
Aktivieren von JavaScript-Builtins und globalen String-Importen
Dieses Beispiel aktiviert JavaScript-String-Builtins und importierte globale String-Konstanten bei der Kompilierung eines Wasm-Moduls über den Module()
-Konstruktor, das dann mit instantiate()
instanziiert wird. Es ruft dann die exportierte main()
-Funktion auf, die "hello world!"
in die Konsole schreibt. Hier live ansehen.
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) => {
const module = new WebAssembly.Module(bytes, compileOptions);
WebAssembly.instantiate(module, importObject).then((instance) =>
instance.exports.main(),
);
});
Spezifikationen
Specification |
---|
WebAssembly JavaScript Interface # dom-module-module |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Module() constructor | ||||||||||||||
compileOptions parameter |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
- No support
- No support
Siehe auch
- WebAssembly Übersichtsseite
- WebAssembly-Konzepte
- Verwendung der WebAssembly JavaScript API