WebAssembly.Module
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 |
ブラウザーの互換性
BCD tables only load in the browser