2 个版本
0.1.1 | 2023年8月19日 |
---|---|
0.1.0 | 2023年8月19日 |
#507 在 模板引擎
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 License,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在该作品中的任何贡献,将如上所述双重授权,不附加任何额外条款或条件。