3个版本
0.1.3 | 2024年1月28日 |
---|---|
0.1.1 | 2024年1月28日 |
0.1.0 | 2023年12月28日 |
877 在 Rust模式 中
每月下载 22 次
33KB
517 行
HTML Tag
HTML Tag,在Rust代码中编写HTML的神秘方式。
它是什么?
HTML Tag是一个包装结构体,允许你在Rust代码中编写HTML。它本质上消除了使用原始字符串或需要使用宏(如来自html
包的html!
宏)来返回HTML字符串的需求。
为什么?
当我实验HTMX库时,我发现我在Rust代码中写了很多原始HTML字符串。
如下
find_files(&search.q).iter().for_each(|x| {
html += format!("<p><a class='link' href='/assets/{}'>{}</a></p>", x, x).as_str();
});
这样的代码可读性很差,而且容易出错。因此,我想找到一种在Rust代码中以更可读和可调试的方式编写HTML的方法。
这就是HTML Tag的由来。
使用HTML Tag,上面的代码可以写成
html = HtmlTag::new("div");
find_files(&search.q).iter().for_each(|x| {
let mut tag = HtmlTag::new("p")
.add_child(HtmlTag::new("a")
.add_class("link")
.set_href(format!("/assets/{}", x))
.set_body(x));
html += tag.to_string();
});
如何使用它?
HTML Tag非常简单易用。基本上,你使用标签名作为参数创建一个新的HtmlTag
结构体。然后你可以使用add_attribute
方法向标签添加属性。然而,对于常见的属性和类,有一些你可以使用的方法来添加它们。
你可以通过文档获取更多信息。
何时使用它?
首先,html_tag不是html!
宏的替代品,它来自html
包。它更像是一个包装结构体,允许你在Rust代码中编写HTML。
当你想在Rust代码中编写HTML时,可以使用它,尤其是在处理HATEOAS API时。
如果你想要完整的HTML生成,最好使用像html_builder这样的工具。
此外,这也意味着你可以对正在生成的HTML字符串进行模块化控制。
因此,例如,你可以这样做
let mut html = HtmlTag::new("div");
let interested = true
if interested {
html.with_child(HtmlTag::new("p").with_body("I am interested"));
} else {
html.with_child(HtmlTag::new("p").with_body("I am not interested"));
}
这是一个非常简单的例子,但你可以看到你可以如何对正在生成的HTML字符串进行模块化控制。
如何贡献?
如果你有任何改进此包的想法,请随时提出问题或拉取请求。
我在 Rust 方面是个完全的菜鸟,尤其是在编写优化良好且文档完备的 crate 方面。因此,任何帮助都备受感激。
我想要改进的几个方面包括
- 提高 crate 的内存效率
- 提高 crate 的性能
- 改善文档
- 添加更多示例
上述任何一项或任何其他改进都受欢迎。
许可证
本 crate 使用 MIT 许可证授权。您可以在此处阅读许可证。