2 个版本
0.2.1 | 2024 年 3 月 18 日 |
---|---|
0.2.0 | 2024 年 2 月 29 日 |
#539 在 HTTP 服务器
用于 ryde_router
20KB
549 行
html
html 提供了一种从纯 Rust 函数渲染 HTML 的舒适方式
cargo add html
编写一些 HTML
use html::*;
fn render(element: Element) -> String {
html::render((
doctype(),
html((
head((title("title"), meta().charset("utf-8"))),
body(element)
))
))
}
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(
render(div("html")),
"<!DOCTYPE html><html><head><title>title</title></head><body><div>html</div></body></html>"
)
}
}
自定义属性
use html::*;
fn htmx_input() -> Element {
input()
.attr("hx-post", "/")
.attr("hx-target", ".target")
.attr("hx-swap", "outerHTML")
.attr("hx-push-url", "false")
}
fn main() {
let html: String = render(htmx_input());
// html == <input hx-post="/" hx-target=".target" hx-swap="outerHTML" hx-push-url="false">
}
自定义元素
use html::*;
fn turbo_frame(children: Element) -> Element {
element("turbo-frame", children)
}
fn main() {
let html: String = render(turbo_frame(div("inside turbo frame")).id("id"));
// <turbo-frame id="id">
// <div>inside turbo frame</div>
// </turbo-frame>
}
依赖关系
~1.6–2.3MB
~46K SLoC