#mjml #mrml #email #print #macro #features

mrml-print-macros

MRML crate 打印功能的宏

4 个版本

0.1.3 2024 年 3 月 21 日
0.1.2 2023 年 12 月 4 日
0.1.1 2023 年 12 月 1 日
0.1.0 2023 年 2 月 12 日

#4 in #mrml

Download history 2428/week @ 2024-03-14 2522/week @ 2024-03-21 2089/week @ 2024-03-28 2386/week @ 2024-04-04 2583/week @ 2024-04-11 1783/week @ 2024-04-18 2053/week @ 2024-04-25 2079/week @ 2024-05-02 2161/week @ 2024-05-09 2571/week @ 2024-05-16 2550/week @ 2024-05-23 2948/week @ 2024-05-30 2548/week @ 2024-06-06 2368/week @ 2024-06-13 2250/week @ 2024-06-20 1644/week @ 2024-06-27

9,392 每月下载次数

MIT 许可证

33KB
531

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 用于获取社交图标的自定义 URL None
fonts MJML 渲染的 HTML 中导入的默认字体 查看默认选项

为什么?

  • 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并希望加入此列表,请毫不犹豫地创建一个问题或发起一个pull request。

什么是MRML?

mjml_nif - Elixir库

mrml-ruby - Ruby库

mjml-python - Python库

如果您正在使用MRML并希望加入此列表,请毫不犹豫地创建一个问题或发起一个pull request。

您想赞助我们吗?

Buy Me A Coffee

感谢zachzurn

许可

FOSSA Status

依赖项

~0.6–1MB
~24K SLoC