4个版本

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

#single-page 中排名 15


用于 silkenweb-html

MIT/Apache

50KB
1K 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::HtmlInputElementweb_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
~171K SLoC