6 个版本 (重大变更)

0.5.1 2023年4月5日
0.5.0 2023年2月20日
0.4.0 2022年6月20日
0.3.0 2021年9月8日
0.1.0 2021年4月16日

#7#html5

Download history 142/week @ 2024-03-11 158/week @ 2024-03-18 79/week @ 2024-03-25 152/week @ 2024-04-01 147/week @ 2024-04-08 216/week @ 2024-04-15 155/week @ 2024-04-22 107/week @ 2024-04-29 189/week @ 2024-05-06 95/week @ 2024-05-13 105/week @ 2024-05-20 81/week @ 2024-05-27 93/week @ 2024-06-03 92/week @ 2024-06-10 97/week @ 2024-06-17 69/week @ 2024-06-24

每月359次下载
3 crates 中使用

无许可证

37KB
632

html-builder

本 crate 帮助您生成 HTML。

let mut buf = Buffer::new();                  // Contents added to buffer by each statement:
let mut html = buf.html().attr("lang='en'");  // <html lang='en'>
writeln!(html.head().title(), "Title!")?;     // <head><title>Title!
writeln!(html.body().h1(), "Header!")?;       // </title></head><body><h1>Header!
buf.finish();                                 // </h1></body></html>
  • 它会自动为您关闭标签。这保证了输出将是正确格式的。这也会使您的代码更美观 - 手动关闭标签是件麻烦事。
  • 它还提供了所有有效 HTML5 标签的辅助方法。您不必使用这些,但如果您这样做,它将确保您不会拼错标签名。

我认为它在安全性和简单性/灵活性之间取得了良好的平衡。

它绝对不是为了性能而构建的,但尽管如此,性能我认为是不错的。基准生成了一个小的(20行)HTML 文档。在我的笔记本电脑上,它运行在2µs。运行 cargo bench 来检查。

市场上有很多高质量的模板库,例如 askama,但我个人不喜欢模板。 typed-html 更接近我想要的,它旨在实现高程度的类型安全(例如,它禁止在 span 级别元素内部使用 div 级别元素)。这在理论上是很好的,但我发现使用它太复杂了。与这个 crate 相比,它简单得多,代价是无法捕获那么多的错误。设计灵感来源于 Haskell 的 HTML 组合库,例如 blaze-htmllucid

依赖项

~145KB