✨ 特性
- 受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()); }
你可以在examples目录中找到更多示例。
🐾 路线图
Template
特性(RFC)- 模板继承(块、部分等)
👤 作者
🇯🇵 Ryohei Machida
- GitHub:@Kogia-sima
🤝 贡献
欢迎贡献、提出问题和功能请求!
由于sailfish是一个不成熟的库,有许多计划中的功能处于RFC阶段。如果你对其设计有想法,请留下评论!
我也欢迎任何改进sailfish的拉取请求!查找带有Status: PR Welcome标签的问题,然后创建一个新的拉取请求吧!
支持我们
如果这个项目对你有帮助,请给一个 ⭐️!
📝 许可证
版权所有 © 2020 Ryohei Machida。
本项目采用MIT许可证。
本README由readme-md-generator生成,充满❤️