#html-macro #html #rsx #macro #ssg

已删除 yate

简单、直观的HTML模板引擎和静态站点生成器

0.1.3 2022年3月9日
0.1.2 2021年7月7日
0.1.1 2021年7月7日
0.0.1 2021年6月23日

#29#rsx

MIT 协议

4KB

yate

crates.io page docs.rs page build license: MIT

yate是一个简单、直观的HTML模板引擎和静态站点生成器。


lib.rs:

yate是一个简单、直观的HTML模板引擎和静态站点生成器。

模板是通过组合由Rust函数返回的由html宏生成的字符串块来完成的。该宏由syn-rsx提供支持,在HTML中的各种位置支持任意Rust语法,从而解锁使用常规语言功能而无需受专用模板语法的限制。由于组合的内容只是一个字符串,这使得它非常灵活,例如可以由web服务器提供或将其作为静态内容写入。

嵌入在html!宏内部的代码块中必须返回一些实现std::fmt::Display的值。有关支持的语法的更多信息,请参阅此处

示例

# async {
use yate::html;

fn content() -> String {
    html! { <div>"content"</div> }
}

fn index() -> String {
    html! {
        <!DOCTYPE html>
        <html>
            <head></head>
            <body>
                {content()}
            </body>
        </html>
    }
}

std::fs::write("index.html", index())?;
#
# Ok::<(), Box<dyn std::error::Error>>(()) };

HTML转义

存在一种语法糖,可以将代码块内的表达式传递给html_escape::escape_text()。工作原理如下

let div = yate::html! { <div>{%= "<uwu>" %}</div> };
assert_eq!(div, "<div>&lt;uwu&gt;</div>")

依赖项

~1.5MB
~40K SLoC