31个版本
0.12.1 | 2023年9月29日 |
---|---|
0.12.0 | 2023年3月6日 |
0.11.1 | 2022年2月16日 |
0.11.0 | 2021年12月21日 |
0.3.2 | 2017年3月12日 |
#4 在 模板引擎 分类中
397,330 每月下载量
在 273 个crate中(168直接使用) 中使用
65KB
1K SLoC
Askama
Askama实现了一个基于Jinja的模板渲染引擎。它根据用户定义的用于存储模板上下文的struct
在编译时生成Rust代码。下面是一个示例,或者阅读这本书。
"非常令人兴奋。我非常希望现在就能使用它。" -- Armin Ronacher,Jinja的创造者
欢迎所有反馈。请随意在问题跟踪器或推文中提交错误、对文档的请求或其他反馈。
Askama由Dirkjan Ochtman创建并维护。如果您能够支持持续维护和进一步开发,或者在使用盈利环境中使用它,请考虑支持我在Patreon上的开源工作。
特性亮点
- 使用熟悉、易于使用的语法构建模板
- 受益于Rust类型系统提供的安全性
- 模板代码编译到您的crate中,以获得最佳性能
- 可选的内置对Actix、Axum、Gotham、Mendes、Rocket、tide和warp Web框架的支持
- 调试功能,帮助您进行模板开发
- 模板必须是有效的UTF-8,并且在渲染时产生UTF-8
- 在JetBrains产品中提供IDE支持
- 在稳定版Rust上运行
支持在模板中使用
- 模板继承
- 循环、if/else语句和包含支持
- 宏支持
- 变量(不允许可变性)
- 一些内置过滤器,以及使用您自己的能力
- 使用'-'标记抑制空白
- 可选退出HTML转义
- 语法定制
如何开始
首先,将Askama依赖项添加到您的crate的Cargo.toml
cargo add askama
现在在您的crate根目录下创建一个名为templates
的目录。在其中,创建一个名为hello.html
的文件,包含以下内容
Hello, {{ name }}!
在您的crate中的任何Rust文件中,添加以下内容
use askama::Template; // bring trait in scope
#[derive(Template)] // this will generate the code...
#[template(path = "hello.html")] // using the template in this path, relative
// to the `templates` dir in the crate root
struct HelloTemplate<'a> { // the name of the struct can be anything
name: &'a str, // the field name should match the variable name
// in your template
}
fn main() {
let hello = HelloTemplate { name: "world" }; // instantiate your struct
println!("{}", hello.render().unwrap()); // then render it.
}
现在您应该能够编译并运行此代码。
查看测试用例以获取更多示例。
依赖关系
~1.4–3.5MB
~77K SLoC