我使用markojs作为我的电子邮件模板,但现在我们移动这些模板在我们的数据库中,以编辑他们在线。我们仍然需要使用marko来保持完整的HTML结构和变量行为。
我已经找到了两种方法来获得像renderSync()方法这样的字符串模板,但是它需要模板在compile()之前或与compile()一起作为文件存在,但是我不知道如何使它与变量处理一起工作。
发布于 2020-09-01 18:34:30
您可以使用Marko的load方法编译模板并取回模板实例,然后可以呈现模板实例以获得最终的HTML:
const template = require("marko").load(templatePath, templateSource, compilerOptions);
const html = template.renderSync(data);您可能不需要传递任何compilerOptions,并且可以省略最后一个参数。
即使您的模板不存在于磁盘上,您仍然需要将一个templatePath传递到一个带有虚拟.marko文件的实际目录中。例如,您可以这样做:
const templatePath = path.join(__dirname, `${database.id}.marko`);templatePath用于两个目的:
require缓存的密钥。如果您多次请求编译相同的文件名,您将得到原始编译。这可能意味着在编辑模板时需要清除需求缓存:delete require.cache[templatePath];templatePath 允许发现这些标记指定的路径。https://stackoverflow.com/questions/63668469
复制相似问题