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日 |
#6 in #mrml
9,621 每月下载量
22KB
232 代码行
MRML
简介
此项目是Rust语言中MJML标记语言的重新实现。
如何在代码中使用它
更新你的 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中导入的默认字体 | 查看默认选项 |
为什么?
- A Node.js服务器渲染MJML模板在启动时大约需要20MB的RAM,在压力测试下需要130MB。在Rust中,启动时不到1.7MB,在压力测试下不到3MB。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
: 尚未实现。它需要处理在wasm(浏览器或服务器端)格式中使用mrml时加载远程模板,这意味着能够从不同的位置加载(例如file://
、https://
、相对路径等)。
谁在使用MRML?
如果你正在使用MRML并希望被添加到此列表中,请毫不犹豫地创建一个问题或发起一个pull request。
什么是使用MRML?
mjml_nif - Elixir库
mrml-ruby - Ruby库
mjml-python - Python库
如果你正在使用MRML并希望被添加到此列表中,请毫不犹豫地创建一个问题或发起一个pull request。
您想赞助我们吗?
感谢zachzurn。
许可证
依赖项
约0.4-0.9MB
约20K SLoC