#powered #syntax #html #dom #virtual-dom #snax #jsx-like

ritz

Rust 的虚拟 HTML DOM 库,支持类似 JSX 的语法并由 Snax 驱动

1 个不稳定版本

0.1.0 2019年2月19日

#299模板引擎

Download history 143/week @ 2024-03-25 114/week @ 2024-04-01 201/week @ 2024-04-08 57/week @ 2024-04-15 75/week @ 2024-04-22 56/week @ 2024-04-29 78/week @ 2024-05-06 39/week @ 2024-05-13 46/week @ 2024-05-20 66/week @ 2024-05-27 47/week @ 2024-06-03 47/week @ 2024-06-10 53/week @ 2024-06-17 36/week @ 2024-06-24 32/week @ 2024-07-01 50/week @ 2024-07-08

180 每月下载量
2 crates 中使用

MIT 许可证

16KB
272

里兹

里兹是一个简单的模板库,它具有由 JSX-like 语法并由 Snax 驱动。

要求

里兹需要 Rust 1.32 或更高版本。

一些事情仍在变化中,所以如果我在事先破坏了任何东西,我感到非常抱歉!

示例

简单页面

use ritz::html;

fn main() {
    let page_title = "Hello, world, from Snax!";

    let page = html! {
        /* Ritz supports regular multi-line Rust comments. */
        <html>
            <head>
                /*
                    Literal strings need to be quoted, unlike JSX.
                    This makes whitespace much more explicit, which is
                    useful!
                */
                <title>"Hello, Snax!"</title>
            </head>
            <body>
                /*
                    Ritz supports embedding Rust expressions that return
                    `impl IntoIterator<HtmlContent>`. String and &str work
                    great here!
                */
                <h1>
                    { page_title }
                </h1>
            </body>
        </html>
    };

    // The result of the html! macro is ritz::HtmlContent.
    // It implements Display and gives you compact HTML without a doctype!
    println!("<!doctype html>");
    println!("{}", page);
}

通过函数进行组合

里兹旨在在使用函数重用 HTML 片段时工作得很好!

use ritz::{html, Fragment, HtmlContent};

fn user_widget<'a>(name: &'a str, age: u32) -> HtmlContent<'a> {
    html! {
        <div class="user">
            { name } " is " { age.to_string() } " years old!"
        </div>
    }
}

fn users() -> HtmlContent<'static> {
    let users = vec![
        ("Gandalf", 34),
        ("Arwen Undómie", 75),
        ("Primula Brandybuck", 133),
    ];

    html! {
        <div class="users">
            { Fragment::new(users.iter().map(|(name, age)| user_widget(name, *age))) }
        </div>
    }
}

许可证

里兹可在 MIT 许可证下获得。有关详细信息,请参阅 LICENSE.txt

依赖关系

~395KB