You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently requires the wat2wasm program to be installed globally. If you don't have that already you can get that by installing the webassembly binary toolkit by using this little helper
Usage
First make a basic WebAssembly .wat file
;; example.wat
(module
;; var result = add(a, b)
(func (export "add") (param $a i32) (param $b i32) (result i32)
;; return a + b
(i32.add
(get_local $a)
(get_local $b)
)
)
)
Then compile it to WebAssembly and wrap in a common js loader by doing
wat2js example.wat -o example.js
To run the WebAssembly simply do:
varexample=require('./example.js')()// load the wasmif(!example)thrownewError('WebAssembly not supported by your runtime')varresult=example.exports.add(1,2)console.log('1 + 2 = '+result)
To keep recompiling the .wat file when it changes pass the --watch option as well
wat2js example.wat -o example.js --watch # recompile when example.wat changes
Loads your WebAssembly module. If WebAssembly is not supported by the runtime, null is returned.
Options include:
{
imports: {...}// import objected forwared to WASM,
async: true// force async loading.}
Note that if your WASM is larger than 4kb, some browsers might force async loading.
mod looks like this
{exports: {...},// exports WASM functionsmemory: Uint8Array,// exports.memory wrapped in a uint8array (if exported)buffer: Uint8Array,// the WASM module as a bufferonload: onload(cb),// function you can call to wait for async loadingrealloc: realloc(bytes)// reallocate the memory buffer to a new size}
In case of async loading exports and memory will be null until the module has been loaded.
License
MIT
About
Compile WebAssembly .wat files to a common js module