2 个版本
0.0.2 | 2023年10月1日 |
---|---|
0.0.1 | 2023年5月1日 |
#282 in 模板引擎
用于 3 个 Crates(通过 wakflo-core)
105KB
2K SLoC
瑞恩模板引擎
lib.rs
:
瑞恩
瑞恩是一个基于 TinyTemplate 的最小化模板库,最初是为在 Criterion.rs 中使用而设计的。它故意不提供完整功能模板引擎的所有功能,但作为回报,它提供简单的 API、清晰的模板语法、良好的性能以及非常少的依赖。
功能
最重要的功能如下(有关模板语法的详细信息,请参阅 语法 模块)
- 渲染值 -
{ myvalue }
- 条件语句 -
{{ if foo }}Foo 是 true{{ else }}Foo 是 false{{ endif }}
- 循环 -
{{ for value in row }}{value}{{ endfor }}
- 可定制的值格式化器
{ value | my_formatter }
- 宏
{{ call my_template with foo }}
限制
Rion 的设计假设模板是静态字符串,无论是使用字符串字面量还是使用 include_str!
宏。因此,它从模板文本本身借用 &str
切片,并在渲染过程中使用它们。尽管可以使用 Rion 与在运行时加载的模板字符串一起使用,但这并不推荐。
此外,Rion 只能将模板渲染到字符串中。如果您需要将模板直接渲染到套接字或文件,Rion 可能不适合您。
示例
#[macro_use]
extern crate serde_derive;
extern crate rion;
use rion::Rion;
use std::error::Error;
#[derive(Serialize)]
struct Context {
name: String,
}
static TEMPLATE : &'static str = "Hello {name}!";
pub fn main() -> Result<(), Box<dyn Error>> {
let mut tt = Rion::new();
tt.add_template("hello", TEMPLATE)?;
let context = Context {
name: "World".to_string(),
};
let rendered = tt.render("hello", &context)?;
println!("{}", rendered);
Ok(())
}
依赖项
~3.5–5MB
~98K SLoC