gpt4 book ai didi

node.js - 将多个 MJML 文件渲染为一个 MJML 文件/字符串

转载 作者:太空宇宙 更新时间:2023-11-03 22:06:46 26 4
gpt4 key购买 nike

我正在将一些旧电子邮件模板转换为 mjml (使用 mjml 版本 4.2)。我正在使用 Azure Function (NodeJs) 使用 Handlebars 动态地将内容添加到模板,并返回最终的 html email ,效果很好。我已将模板的各个部分分成不同的文件(页眉、页脚、简介等),并使用 mj-include 包含它们.

目前这就是我正在做的事情。

  • 我首先阅读了主 mjml 文件。

    var mjmlData = fs.readFileSync(filePath, 'utf8');

  • 然后运行 ​​mjml2html获取模板渲染

    var htmlTemplateObject = mjml2html(mjmlData, {filePath: filePath});

  • 然后我运行 Handlebars 来注入(inject)动态内容

    handlebars.compile(htmlTemplateObject.html)(req.body.data)

在使用句柄动态注入(inject)数据之前,我必须先运行 mjml2html,否则句柄将不会选择我包含在 mj-include 中的文件中的内容。因此,如果我说 p动态内容中的标记,样式不会内联,因为我已经转换了我的 mjml模板为html运行之前handlebars .

有没有办法让我获得完整的mjml (使用 mj-include 包含文件中的内容)在运行 mjml2html 之前渲染为字符串?

非常感谢任何帮助,例如 mjml2string将使这成为一个完美的解决方案。

最佳答案

我浏览了 mjml github 存储库,以了解它是如何工作的,因为 MJML CLI 需要以某种方式组合 中的文件mj-include 元素,然后将其转换为 html。我在 mjml-core/lib/includeExternal 中找到了包含文件并生成 MJML 文档的代码。

我所要做的就是导入它并将其用作

let mjmlTemplate = mjmlInclude(mjmlBaseTemplate, {filePath: mjmlBaseTemplateFilePath})

然后我运行handlebars 将动态内容注入(inject)到模板中,最后运行mjml2html(mjmlTemplate) 来获取最终的html 文件。这样做会将 mj-style 中的样式注入(inject)动态内容中的 html 标记。

关于node.js - 将多个 MJML 文件渲染为一个 MJML 文件/字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52973121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com