Project Icon

minijinja

Rust轻量模板引擎 兼容Jinja2语法

MiniJinja是一个Rust语言的轻量级模板引擎,采用Jinja2语法。它仅依赖serde库,支持模板继承、过滤器等Jinja2核心功能。MiniJinja注重最小依赖、优化编译时间和运行性能,同时保持与Jinja2的兼容性。此外,它还支持表达式评估和动态运行时对象,适用于多种模板渲染需求。

MiniJinja:一个强大的Rust模板引擎,依赖最小化

构建状态 许可证 Crates.io rustc 1.61.0 文档

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

它基于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

你可以在浏览器playground中在线试用MiniJinja,该playground由MiniJinja的WASM构建驱动。

目标:

示例

示例模板:

{% 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 讨论区

相关 Crate

类似项目

以下是 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 分支

赞助

如果您喜欢这个项目并发现它有用,您可以成为赞助者

许可证和链接

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号