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次 下载
26KB
521 行
Simple Html Template
这基本上是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, "<b>Cats</b> are my favorite <i>animal</i>.");
更多示例和怪异的边缘情况行为可以在 src/tests
中找到。
许可证
该项目受以下任一许可证的许可
-
Apache License,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
-
MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT) 可选。
依赖关系
~0–2MB
~40K SLoC