30 个版本

0.9.0-beta2024年6月15日
0.8.4-beta.12024年2月20日
0.8.3 2023年10月22日
0.8.0 2023年7月28日
0.2.0 2020年7月16日

#8模板引擎 中排名

Download history 1199/week @ 2024-05-03 915/week @ 2024-05-10 1103/week @ 2024-05-17 1340/week @ 2024-05-24 1413/week @ 2024-05-31 997/week @ 2024-06-07 1187/week @ 2024-06-14 1143/week @ 2024-06-21 897/week @ 2024-06-28 908/week @ 2024-07-05 954/week @ 2024-07-12 999/week @ 2024-07-19 1012/week @ 2024-07-26 773/week @ 2024-08-02 986/week @ 2024-08-09 970/week @ 2024-08-16

3,893 每月下载量
用于 28 个 Crates (20 直接使用)

MIT 许可证

87KB
2K SLoC

SailFish

简单、小巧且极快的 Rust 模板引擎

Tests Version dependency status Rust 1.60 License: MIT

用户指南 | API 文档 | 示例

✨ 功能

  • EJS 启发的简单直观语法
  • 在模板中包含另一个模板文件
  • 内置过滤器
  • 最小依赖(总计 <15 个 Crates)
  • 极快(参见 基准测试
  • 更好的错误信息
  • 语法高亮支持(vscodevim
  • 支持 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

🤝 贡献

欢迎贡献、问题和特性请求!

由于 sailfish 是一个不成熟的库,有许多 计划中的特性 处于 RFC 阶段。如果您对它的设计有想法,请留下评论!

我还欢迎任何改进 sailfish 的 pull request!找到带有 Status: PR Welcome 标签的问题,让我们创建一个新的 pull request

展示您的支持

如果这个项目对您有帮助,请给一个 ⭐️!

📝 许可证

版权所有 © 2020 Machida Ryohei

本项目遵循MIT许可。


此README由readme-md-generator使用❤️生成

依赖

~0.1–7.5MB
~46K SLoC