~ npm i assemblyscript --save-dev
~ npx asinit .~ npm i
What did that do? First of all, it installed both the loader and the compiler. Secondly, it made a template project with an add function. Now, we just need to compile it to WebAssembly.
~ npm run asbuild
So, if you check out the /build folder, there are the .wasm files that were built. NodeJS and JavaScript both provide a way to run WebAssembly files and AssemblyScript provides its own loader to work with the code. To start our code, we need another file
test.js
const wasmModule =require('./index')// This works just like a normal moduleconsole.log(wasmModule.add(2,9))// -- 11
Now, run it!
~ node test.js
It should have outputted the number 11.
JavaScript code for the add function would look like this:
functionadd(a, b){return a + b
}module.exports={add: add
}
The AssemblyScript code looks like this:
exportfunctionadd(a: i32,b: i32): i32 {return a + b;}
Pretty similar, right? When we compile it, we can require it just like a normal JavaScript file. Keep in mind that WebAssembly is sandboxed which means it can’t access the system, make HTTP requests, or log to the console. However, AssemblyScript supports both WASI and JS bindings (calling JS from AS).
If you have any questions or comments, feel free to comment or join the AssemblyScript Discord. Or, check out the website.😉