carlesba / yew-wasm-pack-minimal

A minimal template for starting a Yew project using wasm-bindgen and wasm-pack

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

About

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.

Usage

1) Install Rust and wasm-pack

Follow the instructions at https://www.rust-lang.org/tools/install and follow the installation link at wasm-pack.

2) Build

Enter wasm-pack build --target web from your project's root directory.

3) [temporary] Bundle

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.

4) [optional] Test Run

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

5) Deploy

Access your generated build artifacts, bundle.js and yew_wasm_pack_minimal_bg.wasm, in ./pkg from your project's root directory.

About

A minimal template for starting a Yew project using wasm-bindgen and wasm-pack

License:Apache License 2.0


Languages

Language:Rust 65.6%Language:HTML 17.8%Language:JavaScript 16.6%