#jinja #jinja2 #template

minijinja

一个具有最少依赖的强大 Rust 模板引擎

82 个版本 (29 个稳定版)

2.1.2 2024年8月9日
2.1.1 2024年7月31日
2.0.2 2024年6月11日
1.0.21 2024年4月24日
0.8.2 2021年11月8日

2 in 模板引擎

Download history 35491/week @ 2024-05-04 36986/week @ 2024-05-11 36312/week @ 2024-05-18 35627/week @ 2024-05-25 35638/week @ 2024-06-01 38052/week @ 2024-06-08 37024/week @ 2024-06-15 42057/week @ 2024-06-22 38821/week @ 2024-06-29 38700/week @ 2024-07-06 43517/week @ 2024-07-13 51644/week @ 2024-07-20 48977/week @ 2024-07-27 49573/week @ 2024-08-03 49743/week @ 2024-08-10 43868/week @ 2024-08-17

199,668 每月下载量
用于 160 个 Crates (100 直接)

Apache-2.0

665KB
13K SLoC

MiniJinja:一个具有最少依赖的强大 Rust 模板引擎

Build Status License Crates.io rustc 1.61.0 Documentation

MiniJinja 是一个基于 Python 的 Jinja2 模板引擎语法定义和行为,为 Rust 设计的强大而最小依赖的模板引擎。

它在 serde 上实现,只将其作为单个必需依赖项。它支持从 Jinja2 的一系列功能,包括继承、过滤器等。目标是能够在 Rust 程序中使用一些模板,而不用担心为小问题引入复杂的依赖项。此外,它还试图不要重新发明轮子,而是保持与现有技术的兼容性,以利用现有的编辑器集成生态系统。

$ cargo tree
minimal v0.1.0 (examples/minimal)
└── minijinja v2.1.2 (minijinja)
    └── serde v1.0.144

此外,minijinja 还可以作为(可选预编译的)命令行可执行文件提供,称为 minijinja-cli

$ curl -sSfL https://github.com/mitsuhiko/minijinja/releases/latest/download/minijinja-cli-installer.sh | sh
$ echo "Hello {{ name }}" | minijinja-cli - -Dname=World
Hello World

您可以在浏览器中在线 使用 MiniJinja

目标

示例

示例模板

{% extends "layout.html" %}
{% block body %}
  <p>Hello {{ name }}!</p>
{% endblock %}

从Rust调用

use minijinja::{Environment, context};

fn main() {
    let mut env = Environment::new();
    env.add_template("hello.txt", "Hello {{ name }}!").unwrap();
    let template = env.get_template("hello.txt").unwrap();
    println!("{}", template.render(context! { name => "World" }).unwrap());
}

用例和用户

以下是MiniJinja的一些有趣的开源用户和用例。示例链接直接指向使用引擎的位置,您可以查看其使用方式

获取帮助

如果您在使用MiniJinja时遇到困难,有建议或需要帮助,您可以使用GitHub讨论

类似项目

这些是与Rust相关的模板引擎

  • Askama:Jinja启发,类型安全,需要模板预编译。在部分语法上与Jinja有显著差异。
  • Tera:Jinja启发,动态,与Jinja有差异。
  • TinyTemplate:具有来自Jinja和Handlebars语法灵感的最小脚本的模板引擎。
  • Liquid:Rust的Liquid模板实现。Liquid受到了Django的启发,而Jinja则从Django中获得了灵感。

从MiniJinja 1.x升级

MiniJinja有两个主要版本,目前都在维护。大多数用户应升级到2.x版本,该版本的对象系统有了很大改进。但是,如果您以前使用过动态对象,升级可能相当复杂。有关升级信息,请参阅UPDATING,其中包含两个引擎版本之间变化的示例指南。

要查看MiniJinja 1.x的示例和代码,您可以浏览minijinja-1.x分支

赞助商

如果您喜欢这个项目并觉得它很有用,您可以成为赞助商

依赖项

~0.1–9.5MB
~60K SLoC