Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Experiment: Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.

WebAssembly.Module() Konstruktor

BaselineWidely available *

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

js
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.

compileOptionsOptional

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

builtinsOptional

Ein 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.

importedStringConstantsOptional

Eine 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 einTypeError ausgelöst.
  • Wenn die Kompilierung fehlschlägt, lehnt der Konstruktor mit einemWebAssembly.CompileError ab.
  • Einige Browser können einenRangeError auslösen, da sie die Kompilierung und Instanziierung von Wasm mit großen Puffern im UI-Thread verbieten.

Beispiele

Synchrones Kompilieren eines WebAssembly-Moduls

js
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.

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) => {    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.


[8]ページ先頭

©2009-2025 Movatter.jp