WebAssembly.Module() コンストラクター

WebAssembly.Module() コンストラクターは、ステートレスな WebAssembly コードを含む新しい Module オブジェクトを生成します。これはブラウザーでコンパイルされ、Worker と効率的に共有することができ、複数回インスタンス化することができます。

WebAssembly.Module() コンストラクター関数は、与えられた WebAssembly バイナリーコードを同期的にコンパイルするために呼び出すことができます。しかし、Module を取得するには、 WebAssembly.compile() のような非同期コンパイル関数を使用するほうが主流です。

構文

警告: 大きなモジュールのコンパイルにはコストがかかるため、開発者はどうしても同期コンパイルが必要な場合にのみ Module() コンストラクターを使用し、それ以外の場合には非同期の WebAssembly.compileStreaming() メソッドを使用してください。

js
new WebAssembly.Module(bufferSource);

引数

bufferSource

型付き配列または ArrayBuffer で、コンパイルしたい .wasm モジュールのバイナリーコードです。

WebAssembly モジュールの同期的なコンパイル

js
var importObject = {
  imports: {
    imported_func: function (arg) {
      console.log(arg);
    },
  },
};

function createWasmModule(bytes) {
  return new WebAssembly.Module(bytes);
}

fetch("simple.wasm")
  .then((response) => response.arrayBuffer())
  .then((bytes) => {
    let mod = createWasmModule(bytes);
    WebAssembly.instantiate(mod, importObject).then((result) =>
      result.exports.exported_func(),
    );
  });

仕様書

Specification
WebAssembly JavaScript Interface
# dom-module-module

ブラウザーの互換性

BCD tables only load in the browser

関連情報