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.

* Some parts of this feature may have varying levels of support.

WebAssembly.Module オブジェクトには、ブラウザーでコンパイルされたステートレスな WebAssembly コードが含まれています。これを効率的にワーカー間で共有したり、複数回インスタンス化したりすることができます。

コンストラクター

WebAssembly.Module()

新しい Module オブジェクトを生成します。

静的プロパティ

WebAssembly.Module.customSections()

Module と文字列を指定すると、モジュール内の与えられた文字列を名前に持つすべてのカスタムセクションの内容を返します。

WebAssembly.Module.exports()

Module を指定すると、エクスポート宣言の情報を配列として返します。

WebAssembly.Module.imports()

Module を指定すると、インポート宣言の情報を配列として返します。

コンパイル済みのモジュールをワーカーに送信

以下の例では (GitHub 上の index-compile.html および実行例も参照)、読み込まれた simple.wasm のバイトコードを WebAssembly.compileStreaming() メソッドでコンパイルし、結果の Module インスタンスをワーカーへ、 postMessage() を使用して送信します。

js
var worker = new Worker("wasm_worker.js");

WebAssembly.compileStreaming(fetch("simple.wasm")).then((mod) =>
  worker.postMessage(mod),
);

ワーカー内では (wasm_worker.js を参照)、モジュールを使用するための import オブジェクトを定義し、メインスレッドからモジュールを受け取るためのイベントハンドラーをセットアップします。モジュールを受け取ったら、 WebAssembly.instantiate() メソッドを使ってインスタンスを作成し、その中からエクスポートされた関数を呼び出します。

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

onmessage = function (e) {
  console.log("module received from main thread");
  var mod = e.data;

  WebAssembly.instantiate(mod, importObject).then(function (instance) {
    instance.exports.exported_func();
  });
};

仕様書

Specification
WebAssembly JavaScript Interface
# modules

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Module
Module() constructor
compileOptions parameter
customSections() static method
exports() static method
imports() static method

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

関連情報