5 个版本
0.1.4 | 2024年3月21日 |
---|---|
0.1.3 | 2024年3月21日 |
0.1.2 | 2023年12月4日 |
0.1.1 | 2023年12月1日 |
0.1.0 | 2023年2月12日 |
#731 in 过程宏
10,312 每月下载量
用于 5 个 crate(直接使用 3 个)
12KB
145 行
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 |
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: 尚未实现。它需要解析生成的 HTML 应用内联样式,这会降低性能。在渲染时应用它将提高性能,但仍然需要解析 CSS。
mj-include
: 尚未实现。它需要处理在 WebAssembly(浏览器或服务器端)中使用 mrml 时加载远程模板的情况,这需要从不同位置加载。
谁在使用 MRML?
如果您正在使用 MRML 并希望被列入此列表,请不要犹豫,创建一个 issue 或 pull request。
什么人在使用 MRML?
mjml_nif - Elixir 库
mrml-ruby - Ruby 库
mjml-python - Python 库
如果您正在使用 MRML 并希望被列入此列表,请不要犹豫,创建一个 issue 或 pull request。
想要赞助我们吗?
感谢 zachzurn。
许可证
依赖关系
~290–730KB
~18K SLoC