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

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.

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

関連情報