LeptosRust Web 框架

联合创作 · 2023-09-20 01:04

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 你想让页面看起来怎么样,让框架告诉浏览器怎么做。
浏览 5
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报