3个版本

0.1.2 2023年1月7日
0.1.1 2021年4月30日
0.1.0 2021年4月29日

#13 in #single-page

MIT/Apache

200KB
1.5K SLoC

此包已废弃

这是一个为Silkenweb提供的旧实现包,现在不再使用。

tests crates.io Documentation MIT/Apache-2 licensed

一个用于构建响应式单页Web应用程序的库。

特性

  • 使用信号进行细粒度响应式,以最小化DOM API调用
  • 无VDOM。使用信号最小化对DOM API和您的渲染代码的调用。
  • 使用纯Rust语法而不是宏DSL
  • 在编译时已知类型的情况下为您下载数据。例如
    • input().dom_element()返回一个web_sys::HtmlInputElement
    • button().on_click(...)将您的处理程序传递一个web_sys::HtmlInputElement和一个web_sys::MouseEvent

示例:一个简单的计数器

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);
}

快速开始

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

学习

依赖

~6.5–9MB
~173K SLoC