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
9,392 每月下载次数
33KB
531 行
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 |
用于获取社交图标的自定义 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。
您想赞助我们吗?
感谢zachzurn。
许可
依赖项
~0.6–1MB
~24K SLoC