48 个版本 (30 个稳定版本)

4.0.1 2024年7月3日
3.1.5 2024年4月13日
3.1.3 2024年3月21日
3.0.0 2023年12月19日
0.2.0 2020年6月8日

#6 in 模板引擎

Download history 3086/week @ 2024-05-03 3365/week @ 2024-05-10 4283/week @ 2024-05-17 3788/week @ 2024-05-24 4723/week @ 2024-05-31 4044/week @ 2024-06-07 3915/week @ 2024-06-14 3926/week @ 2024-06-21 2858/week @ 2024-06-28 4704/week @ 2024-07-05 3710/week @ 2024-07-12 4654/week @ 2024-07-19 4883/week @ 2024-07-26 3355/week @ 2024-08-02 3165/week @ 2024-08-09 2840/week @ 2024-08-16

15,255 每月下载量
用于 5 crates

MIT 许可协议

610KB
16K SLoC

MRML

Crates.io Crates.io FOSSA Status

.github/workflows/main.yml codecov

Average time to resolve an issue Percentage of issues still open Maintainability

简介

本项目是对优秀的 MJML 标记语言 在 Rust 中的重新实现。

如何在代码中使用它

更新你的 cargo.toml

[dependencies]
mrml = "2"
serde = { version = "1.0", features = ["derive"] }

创建你的 main.rs

use mrml;

fn main() {
    let root = mrml::parse("<mjml><mj-body></mj-body></mjml>").expect("parse template");
    let opts = mrml::prelude::render::Options::default();
    match root.render(&opts) {
        Ok(content) => println!("{}", content),
        Err(_) => println!("couldn't render mjml template"),
    };
}

可用选项包括

名称 注释 默认值
disable_comments 从渲染的 HTML 中去除注释 false
social_icon_origin 自定义获取社交图标的服务器地址 None
fonts MJML 渲染的 HTML 中导入的默认字体 查看默认选项

为什么选择它?

  • A Node.js 服务器渲染 MJML 模板在启动时大约需要 20 MB 的 RAM,在压力测试下需要 130 MB。在 Rust 中,启动时不到 1.7 MB,在压力测试下略少于 3 MB。Rust 版本还可以处理每秒两倍多的请求。你可以通过运行 bash script/run-bench.sh 进行基准测试。
  • JavaScript 实现不能在浏览器中运行;Rust 实现和 WebAssembly 实现可以。

你想贡献吗?

请阅读我们的 贡献指南行为准则

性能

在相同的 Linux amd64 机器上,渲染 amario 模板

  • Node: 606.59ms
  • Rust: 3.48ms

未实现的功能

  • mj-style[inline]: 尚未实现。它需要在生成 HTML 后解析以应用内联样式(这就是 mjml 的实现方式),这将降低性能。在渲染时应用它将提高性能,但仍需要解析 CSS。
  • mj-include:尚未实现。它需要在使用 mrml 的 wasm(浏览器或服务器端)格式时处理加载远程模板,这意味着能够从不同的位置加载(例如文件路径,file://https://,相对路径等)。

谁在使用 MRML?

如果您正在使用 MRML 并希望被添加到这份列表中,请不要犹豫,创建一个 issue 或发起一个 pull request。

什么在使用 MRML?

mjml_nif - Elixir 库

mrml-ruby - Ruby 库

mjml-python - Python 库

如果您正在使用 MRML 并希望被添加到这份列表中,请不要犹豫,创建一个 issue 或发起一个 pull request。

您想赞助我们吗?

Buy Me A Coffee

感谢 zachzurn

许可证

FOSSA Status

依赖项

~1–12MB
~136K SLoC