3个版本

0.1.3 2024年1月28日
0.1.1 2024年1月28日
0.1.0 2023年12月28日

877Rust模式

每月下载 22

MIT 许可证

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 许可证授权。您可以在此处阅读许可证。

无运行时依赖