#jinja2 #jinja #template

unified-minijinja

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

1个不稳定版本

1.0.12 2024年3月3日
0.0.2 2024年4月4日

82 在模板引擎


用于 2 个crate(通过 harper

Apache-2.0

635KB
12K SLoC

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

Build Status License Crates.io rustc 1.61.0 Documentation

MiniJinja 是一个强大但依赖项最小的模板引擎,适用于Rust,其语法和行为基于Python的 Jinja2 模板引擎。

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

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

您可以在浏览器中的 MiniJinja 在线游乐场 中尝试 MiniJinja,该游乐场由 MiniJinja 的 WASM 版本提供支持。

目标

示例模板

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

API

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 时遇到困难,有建议或需要帮助,您可以使用 GitHub 讨论区

类似项目

以下是与 Rust 相关的模板引擎

  • Askama:受 Jinja 启发,类型安全,需要模板预编译。部分 Jinja 语法有显著差异。
  • Tera:受 Jinja 启发,动态,与 Jinja 有所不同。
  • TinyTemplate:最小内存占用模板引擎,语法从 Jinja 和 Handlebars 吸取灵感。
  • Liquid:Rust 的 Liquid 模板实现。Liquid 受 Django 启发,而 Jinja 则从 Django 中获得灵感。

赞助商

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

依赖关系

~0.1–1MB
~18K SLoC