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
每月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-html 和 lucid。
依赖项
~145KB