全栈:它可在浏览器中运行,也可以在服务器端渲染、运行,或是服务器渲染 HTML 时在浏览器中添加交互;
同构:你可以在客户端和服务端用相同形式调用函数,但它只在服务器上运行;
Web:leptos 基于 Web 平台和 Web 标准之上,没有新的学习成本;
框架:提供构建现代 Web 应用所需的大部分内容:响应式系统、模版库、可在服务端和客户端跑的路有;
精细的响应:leptos 由响应式原语构造,当响应信号变化时,可以更新单个文本节点、单个类或是从 DOM 中删除一个元素,不用动其他代码;
声明式;
示例代码:
use leptos::*;
#[component] pubfnSimpleCounter(cx: Scope, initial_value: i32) -> Element { // create a reactive signal with the initial value let (value, set_value) = create_signal(cx, initial_value);
// create event handlers for our buttons // note that `value` and `set_value` are `Copy`, so it's super easy to move them into closures let clear = move |_| set_value(0); let decrement = move |_| set_value.update(|value| *value -= 1); let increment = move |_| set_value.update(|value| *value += 1);
// this JSX is compiled to an HTML template string for performance view! { cx,
"Value: " {move || value().to_string()} "!"
} }
// Easy to use with Trunk (trunkrs.dev) or with a simple wasm-bindgen setup pubfnmain() { mount_to_body(|cx| view! { cx, 3 /> })