LeptosRust Web 框架
Leptos 是一个全栈的、同构的 Rust 网络框架,利用细粒度的反应性来构建声明式的用户界面。
值得注意的是,该框架正在积极开发中。开发者将它保持在 0.0.x 版本的周期中,以表明它甚至还没有为 0.1.0 做好准备。正在对文档和功能进行积极的工作,API 不一定被认为是稳定的。同时,它不仅仅是一个玩具项目或概念验证,作者正在积极地将它用于自己的应用程序开发。
use leptos::*; #[component] pub fn SimpleCounter(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, <div> <button on:click=clear>"Clear"</button> <button on:click=decrement>"-1"</button> <span>"Value: " {move || value().to_string()} "!"</span> <button on:click=increment>"+1"</button> </div> } } // Easy to use with Trunk (trunkrs.dev) or with a simple wasm-bindgen setup pub fn main() { mount_to_body(|cx| view! { cx, <SimpleCounter initial_value=3 /> }) }
特点:
- 全栈:Leptos 可以用来构建在浏览器(客户端渲染)、服务器(服务器端渲染)中运行的应用程序,或者通过在服务器上渲染HTML,然后在浏览器中添加交互性(hydration)。这包括支持数据(资源)和HTML的HTTP流(<Suspense/>组件的失序流)。
- 同构:Leptos提供了编写同构服务器函数的 primitives,即可以在客户端或服务器上以 "相同的形式 "调用的函数,但只在服务器上运行。这意味着你可以在客户端组件旁边编写你的服务器专用逻辑(数据库请求、认证等),并调用服务器函数,就像它们在浏览器中运行一样。
- Web:Leptos 建立在Web平台和Web标准之上。该路由器旨在使用 Web 基础知识(如链接和表单)并构建在它们之上,而不是试图取代它们。
- 框架:Leptos 提供了构建现代 Web 应用程序所需的大部分内容:反应式系统、模板库以及可同时在服务器端和客户端运行的路由器。
- 细粒度的反应性:整个框架都是基于 reactive primitives 构建的。这允许以最小的开销编写极其高效的代码:当反应信号的值发生变化时,它可以更新单个文本节点、切换单个类或从 DOM 中删除元素,而无需运行任何其他代码。(所以,没有虚拟 DOM!)
- Declarative : 告诉 Leptos 你想让页面看起来怎么样,让框架告诉浏览器怎么做。
评论