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 â¨2017å¹´10æâ©.
* Some parts of this feature may have varying levels of support.
WebAssembly.Module 对象å
å«å·²ç»ç±æµè§å¨ç¼è¯çæ ç¶æ WebAssembly 代ç ï¼å¯ä»¥é«æå°ä¸ Worker å
±äº«å夿¬¡å®ä¾åã
æé 彿°
WebAssembly.Module()-
å建ä¸ä¸ªæ°ç
Module对象ã
éæå±æ§
WebAssembly.Module.customSections()-
ç»å®ä¸ä¸ª
Moduleåå符串ï¼è¿å模åä¸å ·æç»å®å符串åç§°çææèªå®ä¹çé¨åçå 容坿¬ã WebAssembly.Module.exports()-
ç»å®ä¸ä¸ª
Moduleï¼è¿åä¸ä¸ªæ°ç»ï¼å ¶ä¸å 嫿æå£°æç导åºçæè¿°ã WebAssembly.Module.imports()-
ç»å®ä¸ä¸ª
Moduleï¼è¿åä¸ä¸ªæ°ç»ï¼å ¶ä¸å 嫿æå£°æçå¯¼å ¥çæè¿°ã
示ä¾
>å°ç¼è¯åçæ¨¡ååéå° worker
以ä¸ç¤ºä¾å°ä½¿ç¨ WebAssembly.compileStreaming() æ¹æ³ç¼è¯ simple.wasm å è½½åçåèç ï¼å¹¶å°è¿åç Module å®ä¾éè¿ postMessage() åéå°ä¸ä¸ª workerã
åè§ index-compile.html çæºä»£ç ï¼ææ¥çå¨çº¿æ¼ç¤ºã
const worker = new Worker("wasm_worker.js");
WebAssembly.compileStreaming(fetch("simple.wasm")).then((mod) =>
worker.postMessage(mod),
);
Worker 彿° wasm_worker.js å®ä¹äºæ¨¡åéè¦ä½¿ç¨ç导å
¥å¯¹è±¡ãç¶åï¼è¯¥å½æ°ä¼å建ä¸ä¸ªäºä»¶å¤çå¨ï¼ä»¥æ¥å主线ç¨åéçæ¨¡åã卿¥æ¶å°æ¨¡ååï¼æä»¬ä½¿ç¨ WebAssembly.instantiate() æ¹æ³å建ä¸ä¸ªå®çå®ä¾ï¼ç¶åè°ç¨å
¶å¯¼åºç彿°ã
const importObject = {
imports: {
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();
});
};
è§è
| Specification |
|---|
| WebAssembly JavaScript Interface > # modules > |