WebAssembly.Module
Baseline 廣泛可用 *
WebAssembly.Module 物件包含已由瀏覽器編譯的無狀態 WebAssembly 程式碼 — 這可以被 高效地與 Workers 共享,並可以例項化多次。
注意: WebAssembly.Module 物件與 Emscripten 中使用的 Module 物件無關。
建構函式
WebAssembly.Module()-
建立一個新的
Module物件。
靜態方法
WebAssembly.Module.customSections()-
給定一個
Module和字串,返回該模組中具有給定字串名稱的所有自定義節內容的副本。 WebAssembly.Module.exports()-
給定一個
Module,返回一個包含所有已宣告匯出項描述的陣列。 WebAssembly.Module.imports()-
給定一個
Module,返回一個包含所有已宣告匯入項描述的陣列。
示例
將編譯後的模組傳送到 worker
以下示例使用 WebAssembly.compileStreaming() 方法編譯載入的 simple.wasm 位元組碼,並使用 postMessage() 將生成的 Module 例項傳送給一個 worker。
請檢視 index-compile.html 的 原始碼 或 即時預覽。
js
const worker = new Worker("wasm_worker.js");
WebAssembly.compileStreaming(fetch("simple.wasm")).then((mod) =>
worker.postMessage(mod),
);
Worker 函式 wasm_worker.js 定義了一個供模組使用的匯入物件。然後,該函式設定了一個事件處理程式,用於接收來自主執行緒的模組。當接收到模組時,我們使用 WebAssembly.instantiate() 方法從此模組建立一個例項,並呼叫其中一個匯出的函式。
js
const importObject = {
my_namespace: {
imported_func(arg) {
console.log(arg);
},
},
};
onmessage = (e) => {
console.log("module received from main thread");
const mod = e.data;
WebAssembly.instantiate(mod, importObject).then((instance) => {
instance.exports.exported_func();
});
};
規範
| 規範 |
|---|
| WebAssembly JavaScript 介面 # 模組 |
瀏覽器相容性
載入中…