12个版本

0.2.4 2020年11月16日
0.2.3 2020年8月10日
0.2.2 2020年7月31日
0.1.6 2020年7月27日

404模板引擎

每月43次 下载

MIT/Apache

26KB
521

Simple Html Template

Crates.io Documentation

这基本上是far的一个分支,增加了一些功能

  • 缓存以供重用,以及按名称查找的高级缓存
  • 宏以创建安全的HTML变量。
  • (可选,默认禁用) 在wasm环境中与DOM一起工作的辅助函数

html_map!html_map_strong! 宏使用 htmlescape crate,您必须将其作为依赖项添加(否则在调用这些宏时编译将失败)

注意,与 far 类似,此crate不会以任何方式处理转义键或替换。例如,如果您需要模板中有一个 ${} 文字。

传递给 Template::render() 的 HashMap 的值必须是 AsRef<str>

示例


提供了一个字符串和一个映射,simple-html-template 将尝试在模板中查找所有键(由 ${} 分隔),并将它们替换为映射中的相应值。例如

let template = Template::new("${capitalized specific} are my favorite ${category}.")?;

let args = html_map!{
    "capitalized specific" => "Cats",
    "category" => "animal",
};

let s = template.render(&args)?;

assert_eq!(s, "Cats are my favorite animal.");

如果由于某种原因失败,将返回原因说明

let template = Template::new("${capitalized specific} are my favorite ${category}.")?;

let args = html_map!{
    "capitalized specific" => "Cats",
    // Note the typo here
    "catglory" => "animal",
};


match template.render(&args) {
    Ok(_) => panic!(),
    Err(e) => {
        assert_eq!(
            format!("{}", e),
            r#"missing key: "category"; extraneous key: "catglory""#
        );
    }
}

请注意,如果 html 在变量中,它将被转义

let template = Template::new("${capitalized specific} are my favorite ${category}.")?;

let args = html_map!{
    "capitalized specific" => "<b>Cats</b>",
    "category" => "<i>animal</i>",
};

let s = template.render(&args)?;

assert_eq!(s, "&lt;b&gt;Cats&lt;/b&gt; are my favorite &lt;i&gt;animal&lt;/i&gt;.");

更多示例和怪异的边缘情况行为可以在 src/tests 中找到。

许可证

该项目受以下任一许可证的许可

依赖关系

~0–2MB
~40K SLoC