#html-macro #html #macro #checking #extensible #blazing #escaping

no-std hypertext

一个闪电般的类型检查 HTML 宏 crate

10 个版本 (4 个重大变更)

0.5.1 2024年6月18日
0.5.0 2024年1月20日
0.4.1 2024年1月18日
0.3.2 2024年1月12日
0.1.0 2024年1月12日

模板引擎 中排名第 95

Download history 40/week @ 2024-05-03 29/week @ 2024-05-10 42/week @ 2024-05-17 29/week @ 2024-05-24 24/week @ 2024-05-31 17/week @ 2024-06-07 178/week @ 2024-06-14 34/week @ 2024-06-21 13/week @ 2024-06-28 38/week @ 2024-07-05 26/week @ 2024-07-12 23/week @ 2024-07-19 108/week @ 2024-07-26 67/week @ 2024-08-02 90/week @ 2024-08-09 73/week @ 2024-08-16

每月下载量 340

MIT 许可证

63KB
940 代码行

hypertext

一个闪电般的类型检查 HTML 宏 crate。

功能

  • 元素名称/属性的类型检查
    • 完全可扩展,可用于非标准元素/属性
  • #![no_std] 支持
  • 自动转义
  • 默认使用懒惰渲染以避免多次分配
    • 在嵌套文档的情况下,性能卓越,其他库可能无法胜任

使用 hypertext 的项目

提交一个 pull request 以在此处列出您的项目!

示例

use hypertext::{html_elements, GlobalAttributes, RenderIterator, Renderable};

let shopping_list = ["milk", "eggs", "bread"];

let shopping_list_maud = hypertext::maud! {
    div {
        h1 { "Shopping List" }
        ul {
            @for (&item, i) in shopping_list.iter().zip(1..) {
                li.item {
                    input #{ "item-" (i) } type="checkbox";
                    label for={ "item-" (i) } { (item) }
                }
            }
        }
    }
}
.render();

// or, alternatively:

let shopping_list_rsx = hypertext::rsx! {
    <div>
        <h1>Shopping List</h1>
        <ul>
            { shopping_list.iter().zip(1..).map(|(&item, i)| hypertext::rsx_move! {
                <li class="item">
                    <input id=format!("item-{i}") type="checkbox">
                    <label for=format!("item-{i}")>{ item }</label>
                </li>
            }).render_all() }
        </ul>
    </div>
}
.render();

依赖关系

~0.6–11MB
~133K SLoC