mjml-go:将 MJML 直接编译为 HTML 的 Go 语言解决方案

mjml-go:将 MJML 直接编译为 HTML 的 Go 语言解决方案

mjml-go Compile MJML to HTML directly in your Go applications! mjml-go 项目地址: https://gitcode.com/gh_mirrors/mj/mjml-go

项目介绍

mjml-go 是一个开源的 Go 语言库,它允许开发者直接在 Go 应用程序中编译 MJML(Mailchimp Markup Language)为 HTML。MJML 是一种专为邮件设计的标记语言,它旨在简化 HTML 邮件的开发流程。由于 MJML 本身是一个 JavaScript 库,因此通常需要通过 Node.js 服务器来作为中间层进行编译。mjml-go 的出现解决了这一问题,它通过将 MJML 编译为 WebAssembly 模块,从而可以在 Go 应用程序中直接处理,无需额外的服务器或网络通信。

项目技术分析

mjml-go 的核心是一个简单的 JavaScript 包装器,它接受 JSON 格式的输入和输出。这个包装器通过 webpack 打包,并使用 Suborbital 的 Javy 编译器编译为 WebAssembly 模块。WebAssembly 模块随后被 Brotli 压缩,以减少文件大小。

在运行时,该模块在应用启动时被解压缩并加载到 Wazero 运行时中,以接收输入并编译 MJML 为 HTML。由于 WebAssembly 模块不是线程安全的,mjml-go 维护了一个实例池来处理编译任务,保证了库的线程安全性,使得它可以在多个 goroutines 中并发使用。

项目技术应用场景

mjml-go 非常适合以下场景:

  1. 邮件发送系统:在 Go 语言编写的邮件发送系统中,可以直接将 MJML 模板编译为 HTML,而不依赖外部服务或 Node.js 服务器。
  2. 服务端渲染:在服务端渲染 HTML 邮件时,mjml-go 可以提供更快的响应时间和更低的延迟。
  3. 云函数和微服务:在无服务器的云函数或微服务架构中,mjml-go 可以作为独立的服务运行,减少部署复杂性和资源消耗。

项目特点

  1. 直接编译:在 Go 应用内直接编译 MJML,无需额外的 HTTP 请求和服务器。
  2. 线程安全:通过维护一个实例池,保证了库的线程安全性,可以在多个 goroutines 中并发使用。
  3. 性能优化:WebAssembly 模块经过压缩,减少了文件大小,同时 Wazero 运行时也在不断优化中,预期未来性能将得到进一步提升。
  4. 灵活性:提供了多种定制编译过程的选项,包括 HTML 压缩和美化等。
  5. 易于部署:作为单个 Go 二进制文件部署,简化了部署流程。

以下是一个使用 mjml-go 的简单示例:

func main() {
    input := `<mjml><mj-body><mj-section><mj-column><mj-divider border-color="#F45E43"></mj-divider><mj-text font-size="20px" color="#F45E43" font-family="helvetica">Hello World</mj-text></mj-column></mj-section></mj-body></mjml>`

    output, err := mjml.ToHTML(context.Background(), input, mjml.WithMinify(true))
    
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(output)
}

在上述示例中,我们创建了一个 MJML 模板,并通过 mjml.ToHTML 函数将其编译为 HTML,同时启用了 HTML 压缩。

总的来说,mjml-go 是一个功能强大且灵活的工具,它为 Go 开发者提供了一个简洁的方式来处理 MJML 编译,极大地简化了邮件模板的生成和部署流程。如果你正在寻找一种高效的方式来在 Go 应用中处理邮件模板,mjml-go 可能正是你所需要的。

mjml-go Compile MJML to HTML directly in your Go applications! mjml-go 项目地址: https://gitcode.com/gh_mirrors/mj/mjml-go

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何举烈Damon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值