首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串而不是用MarkoJS文件进行呈现

问从字符串而不是用MarkoJS文件进行呈现
EN

Stack Overflow用户
提问于 2020-08-31 09:46:54
回答 1查看 185关注 0票数 1

我使用markojs作为我的电子邮件模板,但现在我们移动这些模板在我们的数据库中,以编辑他们在线。我们仍然需要使用marko来保持完整的HTML结构和变量行为。

我已经找到了两种方法来获得像renderSync()方法这样的字符串模板,但是它需要模板在compile()之前或与compile()一起作为文件存在,但是我不知道如何使它与变量处理一起工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-01 18:34:30

您可以使用Marko的load方法编译模板并取回模板实例,然后可以呈现模板实例以获得最终的HTML:

代码语言:javascript
复制
const template = require("marko").load(templatePath, templateSource, compilerOptions);
const html = template.renderSync(data);

您可能不需要传递任何compilerOptions,并且可以省略最后一个参数。

即使您的模板不存在于磁盘上,您仍然需要将一个templatePath传递到一个带有虚拟.marko文件的实际目录中。例如,您可以这样做:

代码语言:javascript
复制
const templatePath = path.join(__dirname, `${database.id}.marko`);

templatePath用于两个目的:

  1. 作为节点的require缓存的密钥。如果您多次请求编译相同的文件名,您将得到原始编译。这可能意味着在编辑模板时需要清除需求缓存:delete require.cache[templatePath];
  2. 来发现定制的Marko标签。如果您有用于电子邮件模板的自定义标记/组件,则应确保templatePath 允许发现这些标记指定的路径。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63668469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档