#template #html #markup

sailfish-macros

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

29 个版本

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日

#604模板引擎

Download history 985/week @ 2024-04-27 1143/week @ 2024-05-04 950/week @ 2024-05-11 1133/week @ 2024-05-18 1307/week @ 2024-05-25 1435/week @ 2024-06-01 992/week @ 2024-06-08 1187/week @ 2024-06-15 1136/week @ 2024-06-22 962/week @ 2024-06-29 843/week @ 2024-07-06 965/week @ 2024-07-13 1020/week @ 2024-07-20 913/week @ 2024-07-27 768/week @ 2024-08-03 812/week @ 2024-08-10

3,655 每月下载量
用于 sailfish

MIT 许可证

96KB
2.5K SLoC

SailFish

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

Tests Version dependency status Rust 1.60 License: MIT

用户指南 | API 文档 | 示例

✨ 特点

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

本项目采用MIT许可协议。


此README由readme-md-generator生成,包含❤️。

依赖关系

~0.4–8MB
~60K SLoC