diff options
author | 2019-11-22 20:30:57 +0100 | |
---|---|---|
committer | 2019-11-22 20:30:57 +0100 | |
commit | 42e775fecec81acd40dbc5f536c8a4cd98a03662 (patch) | |
tree | f58586d2223f39933d9bfbe6fff4e7a88fe4b6d3 /web | |
parent | a7dba612f03e58d7bd9527499d893987986b347c (diff) | |
parent | 9712b319bb7a32848001b96bd84977430f14b623 (diff) | |
download | iced-42e775fecec81acd40dbc5f536c8a4cd98a03662.tar.gz iced-42e775fecec81acd40dbc5f536c8a4cd98a03662.tar.bz2 iced-42e775fecec81acd40dbc5f536c8a4cd98a03662.zip |
Merge branch 'master' into improvement/docs
Diffstat (limited to 'web')
-rw-r--r-- | web/README.md | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/web/README.md b/web/README.md new file mode 100644 index 00000000..762f6c83 --- /dev/null +++ b/web/README.md @@ -0,0 +1,65 @@ +# `iced_web` +[][documentation] +[](https://crates.io/crates/iced_web) +[](https://github.com/hecrj/iced/blob/master/LICENSE) +[](https://iced.zulipchat.com) + +`iced_web` takes [`iced_core`] and builds a WebAssembly runtime on top. It achieves this by introducing a `Widget` trait that can be used to produce VDOM nodes. + +The crate is currently a __very experimental__, simple abstraction layer over [`dodrio`]. + + + +[documentation]: https://docs.rs/iced_web +[`iced_core`]: ../core +[`dodrio`]: https://github.com/fitzgen/dodrio + +## Installation +Add `iced_web` as a dependency in your `Cargo.toml`: + +```toml +iced_web = "0.1.0-alpha" +``` + +__Iced moves fast and the `master` branch can contain breaking changes!__ If +you want to learn about a specific release, check out [the release list]. + +[the release list]: https://github.com/hecrj/iced/releases + +## Usage +The current build process is a bit involved, as [`wasm-pack`] does not currently [support building binary crates](https://github.com/rustwasm/wasm-pack/issues/734). + +Therefore, we instead build using the `wasm32-unknown-unknown` target and use the [`wasm-bindgen`] CLI to generate appropriate bindings. + +For instance, let's say we want to build the [`tour` example]: + +``` +cd examples +cargo build --example tour --target wasm32-unknown-unknown +wasm-bindgen ../target/wasm32-unknown-unknown/debug/examples/tour.wasm --out-dir tour --web +``` + +Then, we need to create an `.html` file to load our application: + +```html +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8"/> + <title>Tour - Iced</title> + </head> + <body> + <script type="module"> + import init from "./tour/tour.js"; + + init('./tour/tour_bg.wasm'); + </script> + </body> +</html> +``` + +Finally, we serve it using an HTTP server and access it with our browser. + +[`wasm-pack`]: https://github.com/rustwasm/wasm-pack +[`wasm-bindgen`]: https://github.com/rustwasm/wasm-bindgen +[`tour` example]: ../examples/README.md#tour |