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 模板引擎
15,255 每月下载量
用于 5 crates
610KB
16K SLoC
MRML
简介
本项目是对优秀的 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。
您想赞助我们吗?
感谢 zachzurn。
许可证
依赖项
~1–12MB
~136K SLoC