#html-macro #html #macro #hypertext #blazing #element #type-checked

hypertext-macros

一个闪电般快的类型检查 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日

#11 in #hypertext

Download history 42/week @ 2024-05-04 34/week @ 2024-05-11 39/week @ 2024-05-18 37/week @ 2024-05-25 29/week @ 2024-06-01 22/week @ 2024-06-08 199/week @ 2024-06-15 27/week @ 2024-06-22 36/week @ 2024-06-29 27/week @ 2024-07-06 32/week @ 2024-07-13 25/week @ 2024-07-20 110/week @ 2024-07-27 79/week @ 2024-08-03 89/week @ 2024-08-10 75/week @ 2024-08-17

355 每月下载量
用于 hypertext

MIT 许可证

66KB
2K SLoC

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–1.1MB
~25K SLoC