#html-templating #html #template #hypermedia #web-apps #define

hypersynthetic_types

hypersynthetic 和 hypersynthetic_macros 的常用类型定义

2 个版本

0.1.1 2023年8月19日
0.1.0 2023年8月19日

#507模板引擎

MIT/Apache

6KB
111

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。要使用此功能,在将此库作为依赖项添加时,请在您的 Cargo.toml 中添加 features = ["rocket"]

许可协议

许可协议为以下之一

任选其一。

贡献

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

无运行时依赖