#html-templating #html #template #hypermedia

hypersynthetic

一个选择组合而非继承的HTML模板引擎

9个不稳定版本 (3个破坏性版本)

0.4.0 2024年6月13日
0.3.1 2024年5月4日
0.3.0 2023年10月18日
0.2.1 2023年9月1日
0.1.3 2023年8月21日

#96 in 模板引擎

每月34次下载

MIT/Apache

20KB
205

hypersynthetic

Hypersynthetic是一个用于在Rust中编写HTML的库。它受到JSX和HEEx模板的启发,并试图在关键方面与Tera和Minijinja不同:它只允许通过组合而不是继承来重用HTML代码。它适用于构建传统Web应用程序,后端以HTML响应。

以下是一个hypersynthetic能做什么的例子

示例

use hypersynthetic::prelude::*;

#[component]
fn TodoItem(text: &str, done: bool) -> HtmlFragment {
    let text_decoration = if done { "line-through" } else { "none" };

    html! {
        <li style="text-decoration: {text_decoration};">
            {text}
        </li>
    }
}

fn main() {
    let todo_list = vec![
        ("Buy Milk", true),
        ("Read Rust Book", false),
        ("Write Web App using html! macro", false),
    ];

    let rendered_list = html! {
        <ul>
            <TodoItem :for={(text, done) in todo_list} text={text} done={done} />
        </ul>
    };

    // ... Render `rendered_list` into your application.
}

在这个例子中

TodoItem组件显示一个待办事项,如果已完成则将其划掉。主函数定义了一个待办事项列表,并使用:for属性遍历它们,使用TodoItem组件渲染每个项。

有关语法描述,请参阅html宏,有关组件使用的更多详细信息,请参阅component

功能

  • rocket:启用与Rocket Web框架的集成,并允许从处理程序返回HtmlFragment。要使用此功能,在将此库作为依赖项添加时,请将features = ["rocket"]添加到您的Cargo.toml中。

许可证

许可方式为以下之一

任选其一。

贡献

除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据Apache-2.0许可证定义,应如上所述双重许可,不附加任何额外条款或条件。

依赖关系

~0.4–32MB
~487K SLoC