4个稳定版本
使用旧Rust 2015
1.1.2 | 2024年2月8日 |
---|---|
1.0.1 | 2024年1月27日 |
60 在 模板引擎 中排名
1,030 每月下载量
100KB
2K SLoC
TinyTemplate
TinyTemplate是一个小型、极简的文本模板系统,依赖性有限。
目录
目标
主要设计目标是
- 小型:TinyTemplate故意不支持更强大模板引擎的许多功能。
- 简单:TinyTemplate提供了一个最小但文档良好的用户API。
- 轻量级:TinyTemplate的依赖性最小。
不包括的目标有
- 可扩展性:TinyTemplate支持自定义值格式化器,但仅此而已。
- 性能:TinyTemplate提供了相当的性能,但其他模板引擎可能更快。
为什么是TinyTemplate?
我创建TinyTemplate是因为注意到现有的模板库中没有哪一个真正适合我的Criterion.rs需求。一些有大型依赖树来支持我未使用的功能。一些需要添加构建脚本在运行时将模板转换为代码,以追求我不需要的高性能。一些有基于宏的复杂DSL来生成HTML,而我只是想要带有一些标记的纯文本。一些期望模板以文本文件目录的形式提供,但我希望模板包含在二进制文件中。我只是想要一个小型、极简的且具有良好文档的库,但市面上没有这样的东西,所以我写了自己的。
TinyTemplate非常适合生成HTML报告和类似的文本文件。它可以在Web服务器中用于生成HTML或其他文本,但对于更复杂的用例,另一个模板引擎可能更适合。
快速入门
首先,将TinyTemplate和serde-derive添加到你的Cargo.toml
文件中
[dependencies]
tinytemplate-async = "1.0"
serde = { version = "1.0", features = ["derive"] }
然后,将以下代码添加到"src.rs"中
use serde::Serialize;
use tinytemplate_async::TinyTemplate;
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 = TinyTemplate::new();
tt.add_template("hello".to_string(), TEMPLATE.to_string())?;
let context = Context {
name: "World".to_string(),
};
let rendered = tt.render("hello".to_string(), &context)?;
println!("{}", rendered);
Ok(())
}
这将打印"Hello World!"到标准输出。
兼容性策略
TinyTemplate支持Rust的最近三个稳定的小版本。在撰写本文时,这意味着Rust 1.38或更高版本。较旧版本可能可以工作,但未经测试或保证。
目前,被认为能够运行的Rust的最老版本是1.36。TinyTemplate的后续版本可能会放弃对这些旧版本的支持,但这不会被视为重大变更。如果您需要TinyTemplate在旧版本的Rust上运行,您将需要坚持使用TinyTemplate的一个特定补丁版本。
贡献
感谢您的关注!欢迎贡献力量。
有关问题、功能请求、疑问和错误报告,请通过上述问题跟踪器进行报告。特别是,由于TinyTemplate旨在具有良好的文档,请报告您在文档中发现的任何令人困惑或不正确的内容。
欢迎以拉取请求的形式提交代码或文档改进。但在进行大量工作之前,请先提交或评论一个问题以允许讨论。
有关更多详细信息,请参阅CONTRIBUTING.md文件。
维护
TinyTemplate由Brook Heisler (@bheisler) 创建并维护。
许可协议
TinyTemplate采用Apache 2.0许可和MIT许可的双重许可。
依赖项
~0.5–1.1MB
~22K SLoC