silkenweb-reactive 0.1.2

Silkenweb reactive primitives
Documentation
  • Coverage
  • 78.79%
    26 out of 33 items documented5 out of 29 items with examples
  • Size
  • Source code size: 26.18 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 3.49 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 13s Average build duration of successful builds.
  • all releases: 13s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • silkenweb/silkenweb
    284 8 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • simon-bourne

This Crate is Deprecated

This is an old implementation crate for Silkenweb that is no longer used.

tests crates.io Documentation MIT/Apache-2 licensed

A library for building reactive single page web apps.

Features

  • Fine grained reactivity using signals to minimize DOM API calls
  • No VDOM. Calls to the DOM API and your rendering code are minimized using signals.
  • Uses plain Rust syntax rather than a macro DSL
  • Downcasts Js objects for you where the type is known at compile time. For example:
    • input().dom_element() returns a web_sys::HtmlInputElement
    • button().on_click(...) passes your event handler a web_sys::HtmlInputElement and a web_sys::MouseEvent.

Example: A Simple Counter

use silkenweb::{
    elements::{button, div, p},
    mount,
    signal::Signal,
};

fn main() {
    let count = Signal::new(0);
    let set_count = count.write();
    let inc = move |_, _| set_count.replace(|&i| i + 1);
    let count_text = count.read().map(|i| format!("{}", i));

    let app = div()
        .child(button().on_click(inc).text("+"))
        .child(p().text(count_text));

    mount("app", app);
}

Quick Start

rustup target add wasm32-unknown-unknown
cargo install trunk wasm-pack
cargo install wasm-bindgen-cli --version 0.2.73
cd examples/counter
trunk serve --open

Learning