#template #markup #html

sailfish-compiler

简单、小巧且非常快速的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日

#141模板引擎

Download history 1065/week @ 2024-04-25 1194/week @ 2024-05-02 988/week @ 2024-05-09 1032/week @ 2024-05-16 1317/week @ 2024-05-23 1479/week @ 2024-05-30 1033/week @ 2024-06-06 1117/week @ 2024-06-13 1215/week @ 2024-06-20 961/week @ 2024-06-27 849/week @ 2024-07-04 924/week @ 2024-07-11 1030/week @ 2024-07-18 990/week @ 2024-07-25 813/week @ 2024-08-01 844/week @ 2024-08-08

3,847 每月下载量
3 个库中使用了(2个直接使用)

MIT 许可证

88KB
2K SLoC

SailFish

简单、小巧且非常快速的Rust模板引擎

Tests Version dependency status Rust 1.60 License: MIT

用户指南 | API文档 | 示例

✨ 特点

  • EJS启发的简单直观语法
  • 在模板内部包含另一个模板文件
  • 内置过滤器
  • 最小依赖(总共15个库以下)
  • 非常快(见 基准测试
  • 更好的错误信息
  • 语法高亮支持(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 trait (RFC
  • 模板继承(块、部分等)

👤 作者

🇯🇵 Ryohei Machida

🤝 贡献

欢迎贡献、问题和功能请求!

由于sailfish是一个不成熟的库,有很多计划中的功能正处于RFC阶段。如果您对其设计有任何想法,请留下评论!

我还欢迎任何改进sailfish的拉取请求!找到带有 状态:PR Welcome 标签的问题,并 让我们创建一个新的拉取请求

展示您的支持

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

📝 许可证

版权所有 © 2020 Machida Ryohei

本项目采用MIT许可。


此README由readme-md-generator生成,制作时充满爱心。

依赖项

~0.4–8MB
~63K SLoC