This template demonstrates the minimum code and tooling necessary for a frontend web app with simple deployable artifacts consisting of one HTML file, one JavaScript file, and one WebAssembly file, using Yew
, wasm-bindgen
, and wasm-pack
.
Note: yew-wasm-pack-template
is the full-featured counterpart to this template, integrating many common web technologies.
Follow the instructions at https://www.rust-lang.org/tools/install and follow the installation
link at wasm-pack
.
Enter wasm-pack build --target web
from your project's root directory.
Enter rollup ./main.js --format iife --file ./pkg/bundle.js
from your project's root directory.
Note: Until wasm-pack
RFC #6 is implemented there is no available option to generate a single amalgamated JavaScript file. In the interim a bundler, such as Rollup
, must be used.
Run a webserver from your project's root directory, such as with the Python 3 command: python -m http.server 8080
, and load http://localhost:8080/ in a browser to run the app.
Note: It's expected behavior for the browser console to display an error similar to "WebAssembly.instantiateStreaming failed. Assuming this is because your server does not serve wasm with application/wasm MIME type." Your production webserver should be configured to associate WebAssembly files with the application/wasm
MIME type.
If you have become an orthodox Rust person than you can use see
or miniserve
servers to share assets:
cargo install see
see start -b 8080
Access your generated build artifacts, bundle.js
and yew_wasm_pack_minimal_bg.wasm
, in ./pkg from your project's root directory.