Skip to content
This repository has been archived by the owner on Feb 15, 2024. It is now read-only.
/ iced_web Public archive

A web runtime for iced that targets the DOM

Notifications You must be signed in to change notification settings

iced-rs/iced_web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

iced_web

Documentation Crates.io License Downloads Discord Server project chat

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.

Installation

Add iced_web as a dependency in your Cargo.toml:

iced_web = "0.4"

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.

Usage

The current build process is a bit involved, as wasm-pack does not currently support building binary crates.

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 --package tour --target wasm32-unknown-unknown
wasm-bindgen ../target/wasm32-unknown-unknown/debug/tour.wasm --out-dir tour --web

Note: Keep in mind that Iced is still in early exploration stages and most of the work needs to happen on the native side of the ecosystem. At this stage, it is important to be able to batch work without having to constantly jump back and forth. Because of this, there is currently no requirement for the master branch to contain a cross-platform API at all times. If you hit an issue when building an example and want to help, it may be a good way to start contributing!

Once the example is compiled, we need to create an .html file to load our application:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <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.

About

A web runtime for iced that targets the DOM

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages