WebAssembly
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 JavaScript å¯¹è±¡æ¯ææ WebAssembly ç¸å
³åè½çå½å空é´ã
å大夿°å
¨å±å¯¹è±¡ä¸ä¸æ ·ï¼WebAssembly䏿¯ä¸ä¸ªæé 彿°ï¼å®ä¸æ¯ä¸ä¸ªå½æ°å¯¹è±¡ï¼ãå®ç±»ä¼¼äº Math 对象æè
Intl 对象ï¼Math å¯¹è±¡ä¹æ¯ä¸ä¸ªå½å空é´å¯¹è±¡ï¼ç¨äºä¿åæ°å¦å¸¸éå彿°ï¼Intl 忝ç¨äºå½é
ååå
¶ä»è¯è¨ç¸å
³å½æ°çå½å空é´å¯¹è±¡ã
æè¿°
WebAssembly 对象主è¦ç¨äºï¼
- 使ç¨
WebAssembly.instantiate()彿°å è½½ WebAssembly 代ç ã - éè¿
WebAssembly.Memory()/WebAssembly.Table()æé 彿°å建æ°çå åå表å®ä¾ã - ç±
WebAssembly.CompileError()/WebAssembly.LinkError()/WebAssembly.RuntimeError()æé 彿°æ¥æä¾ WebAssembly ä¸çé误信æ¯ã
æ¹æ³
WebAssembly.instantiate()-
ç¨äºç¼è¯åå®ä¾å WebAssembly 代ç ç主 APIï¼è¿åä¸ä¸ª
Moduleåå®ç第ä¸ä¸ªInstanceå®ä¾ã WebAssembly.instantiateStreaming()-
ç´æ¥ä»æµå¼åºå±æºç¼è¯åå®ä¾å WebAssembly 模åï¼åæ¶è¿å
Moduleåå ¶ç¬¬ä¸ä¸ªInstanceå®ä¾ã WebAssembly.compile()-
æ WebAssembly äºè¿å¶ä»£ç ç¼è¯ä¸ºä¸ä¸ª
WebAssembly.Moduleï¼ä¸è¿è¡å®ä¾åã WebAssembly.compileStreaming()-
ç´æ¥ä»æµå¼åºå±æºä»£ç ç¼è¯
WebAssembly.Moduleï¼å°å®ä¾åä½ä¸ºä¸ä¸ªåç¬çæ¥éª¤ã WebAssembly.validate()-
æ ¡éª WebAssembly äºè¿å¶ä»£ç çç±»åæ°ç»æ¯å¦åæ³ï¼åæ³åè¿å trueï¼å¦åè¿å falseã
æé å¨
WebAssembly.Global()-
å建ä¸ä¸ªæ°ç WebAssembly
Globalå ¨å±å¯¹è±¡ã WebAssembly.Module()-
å建ä¸ä¸ªæ°ç WebAssembly
Module模å对象ã WebAssembly.Instance()-
å建ä¸ä¸ªæ°ç WebAssembly
Instanceå®ä¾å¯¹è±¡ã WebAssembly.Memory()-
å建ä¸ä¸ªæ°ç WebAssembly
Memoryå å对象ã WebAssembly.Table()-
å建ä¸ä¸ªæ°ç WebAssembly
Tableè¡¨æ ¼å¯¹è±¡ã WebAssembly.CompileError()-
å建ä¸ä¸ªæ°ç WebAssembly
CompileErrorç¼è¯é误对象ã WebAssembly.LinkError()-
å建ä¸ä¸ªæ°ç WebAssembly
LinkError龿¥é误对象ã WebAssembly.RuntimeError()-
å建ä¸ä¸ªæ°ç WebAssembly
RuntimeErrorè¿è¡æ¶é误对象ã
示ä¾
ä¸é¢ç示ä¾ï¼è¯·åè§ GitHub ä¸ç Instantiate-streaming.html æ¼ç¤ºï¼å¹¶æ¥çå¨çº¿æ¼ç¤ºï¼ç´æ¥ä»æµå¼åºå±æºä¼ è¾ .wasm 模åï¼ç¶å对å
¶è¿è¡ç¼è¯åå®ä¾åï¼å¹¶éè¿ ResultObject å®ç° promiseãç±äº instantiateStreaming() 彿°æ¥å对 Response 对象ç promiseï¼å æ¤ä½ å¯ä»¥ç´æ¥åå
¶ä¼ é fetch() è°ç¨ï¼ç¶åå®å°æè¿åç response ä¼ éç»éåç彿°ã
var importObject = { imports: { imported_func: (arg) => console.log(arg) } };
WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
(obj) => obj.instance.exports.exported_func(),
);
è¿åçResultObjectå®ä¾çæåå¯ä»¥è¢«éå访é®å°ï¼å¯ä»¥è°ç¨å®ä¾ä¸è¢«å¯¼åºçæ¹æ³ã
è§è
| Specification |
|---|
| WebAssembly JavaScript Interface > # webassembly-namespace > |