30 个版本
0.9.0-beta | 2024年6月15日 |
---|---|
0.8.4-beta.1 | 2024年2月20日 |
0.8.3 | 2023年10月22日 |
0.8.0 | 2023年7月28日 |
0.2.0 | 2020年7月16日 |
#8 在 模板引擎 中排名
3,893 每月下载量
用于 28 个 Crates (20 直接使用)
87KB
2K SLoC
✨ 功能
- 受 EJS 启发的简单直观语法
- 在模板中包含另一个模板文件
- 内置过滤器
- 最小依赖(总计 <15 个 Crates)
- 极快(参见 基准测试)
- 更好的错误信息
- 语法高亮支持(vscode、vim)
- 支持 Rust 1.60 或更高版本
🐟 示例
依赖
[dependencies]
sailfish = "0.9.0-beta"
您可以选择使用 TemplateSimple
直接访问字段
模板文件(templates/hello.stpl)
<html> <body> <% for msg in messages { %> <div><%= msg %></div> <% } %> </body> </html>
代码
use sailfish::TemplateSimple; #[derive(TemplateSimple)] #[template(path = "hello.stpl")] struct HelloTemplate { messages: Vec<String> } fn main() { let ctx = HelloTemplate { messages: vec![String::from("foo"), String::from("bar")], }; println!("{}", ctx.render_once().unwrap()); }
或者使用更强大的 Template
、/TemplateMut、/TemplateOnce
模板文件(templates/hello.stpl)
<html> <body> <% for msg in &self.messages { %> <div><%= msg %></div> <% } %> <div><%= self.say_hello() %></div> </body> </html>
代码
use sailfish::Template; #[derive(Template)] #[template(path = "hello.stpl")] struct HelloTemplate { messages: Vec<String> } impl HelloTemplate { fn say_hello(&self) -> String { String::from("Hello!") } } fn main() { let ctx = HelloTemplate { messages: vec![String::from("foo"), String::from("bar")], }; println!("{}", ctx.render().unwrap()); }
您可以在 示例目录 中找到更多示例。
🐾 路线图
Template
特性(RFC)- 模板继承(块、部分等)
👤 作者
🇯🇵 Ryohei Machida
- GitHub: @Kogia-sima
🤝 贡献
欢迎贡献、问题和特性请求!
由于 sailfish 是一个不成熟的库,有许多 计划中的特性 处于 RFC 阶段。如果您对它的设计有想法,请留下评论!
我还欢迎任何改进 sailfish 的 pull request!找到带有 Status: PR Welcome 标签的问题,让我们创建一个新的 pull request!
展示您的支持
如果这个项目对您有帮助,请给一个 ⭐️!
📝 许可证
版权所有 © 2020 Machida Ryohei。
本项目遵循MIT许可。
此README由readme-md-generator使用❤️生成
依赖
~0.1–7.5MB
~46K SLoC