This example demonstrates how to structure and compile a simple JSaddle app with GHC
and WebGHC
.
This uses wasm-cross
internally for using WebGHC
and reflex-platform
to provide TemplateHaskell
support.
The jsaddle-warp
is used here to provide a browser based app. It is possible to use jsaddle-webkit2gtk
to get a desktop app instead.
nix-build -A ghc.example-jsaddle-project -o result-ghc
./result-ghc/bin/example-jsaddle-project
Then open http://localhost:3709
Build the project to obtain the WebAssembly executable
nix-build -A wasm.example-jsaddle-project -o result-wasm
The release.nix
has a wasm-app
target to package the generated WebAssembly executable with the JS files from webabi
.
In addition to that this also calls wasm-strip
and wasm-opt
to reduce the size of the binary.
nix-build release.nix -A wasm-app -o result-wasm-app
cd ./result-wasm-app
hserv -p8000
Then open http://localhost:8000