3个版本
0.1.2 | 2023年1月7日 |
---|---|
0.1.1 | 2021年4月30日 |
0.1.0 | 2021年4月29日 |
#13 in #single-page
200KB
1.5K SLoC
此包已废弃
这是一个为Silkenweb提供的旧实现包,现在不再使用。
一个用于构建响应式单页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
学习
- 用大量的计数器学习Silkenweb
- 查看示例文件夹
依赖
~6.5–9MB
~173K SLoC