WebAssembly.Module() Konstruktor
BaselineWidely 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.
EinWebAssembly.Module()
Konstruktor erstellt ein neues Modulobjekt, das zustandslosen WebAssembly-Code enthält, der bereits vom Browser kompiliert wurde und effizientmit Workern geteilt und mehrfach instanziiert werden kann.
DieWebAssembly.Module()
Konstruktorfunktion kann aufgerufen werden, um den gegebenen WebAssembly-Binärcode synchron zu kompilieren. Der primäre Weg, um einModule
zu erhalten, ist jedoch durch eine asynchrone Kompilierungsfunktion wieWebAssembly.compile()
.
Warnung:Da die Kompilierung großer Module aufwendig sein kann, sollten Entwickler denModule()
Konstruktor nur dann verwenden, wenn eine synchrone Kompilierung absolut notwendig ist; die asynchrone MethodeWebAssembly.compileStreaming()
sollte in allen anderen Fällen verwendet werden.
Hinweis:Webseiten, die eine strikteContent Security Policy (CSP) haben, könnten die Kompilierung und Ausführung von WebAssembly-Modulen blockieren. Für weitere Informationen zum Zulassen der Kompilierung und Ausführung von WebAssembly siehe diescript-src CSP.
Syntax
new WebAssembly.Module(bufferSource)new WebAssembly.Module(bufferSource, compileOptions)
Parameter
bufferSource
Eintypisiertes Array oderArrayBuffer, das den Binärcode des Wasm-Moduls enthält, das Sie kompilieren möchten.
compileOptions
OptionalEin Objekt, das Kompilierungsoptionen enthält. Eigenschaften können beinhalten:
builtins
OptionalEin Array von Zeichenfolgen, das die Verwendung vonJavaScript builtins im kompilierten Wasm-Modul ermöglicht. Die Zeichenfolgen definieren die builtins, die Sie aktivieren möchten. Derzeit ist der einzige verfügbare Wert
"js-string"
, der JavaScript-String-Builtins aktiviert.importedStringConstants
OptionalEine Zeichenfolge, die einen Namespace fürimportierte globale Zeichenfolgenkonstanten angibt. Diese Eigenschaft muss angegeben werden, wenn Sie importierte globale Zeichenfolgenkonstanten 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 Puffern im UI-Thread verbieten.
Beispiele
Synchrones Kompilieren 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(), ); });
Aktivierung von JavaScript-Builtins und globalen Zeichenfolgenimporten
Dieses Beispiel ermöglicht JavaScript-String-Builtins und importierte globale Zeichenfolgenkonstanten, wenn ein Wasm-Modul über denModule()
-Konstruktor kompiliert wird, welches dann mitinstantiate()
instanziiert wird. Anschließend wird die exportierte Funktionmain()
aufgerufen, die"hello world!"
auf 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
Siehe auch
MDN-Feedback-Box
Diese Seite wurde automatisch aus dem Englischen übersetzt.