有没有人知道一种好的解决方案,可以在运行时仅知道模板名称时包含模板? EJS 的包含仅允许指定确切的文件/模板名称。
用例:我有一个文章布局,其中包含某些本地文件中的文章 HTML/EJS 内容。
为此,我需要类似 https://github.com/visionmedia/ejs#includes 的东西,但文件名应从 locals 变量中获取:
假设我有这样的处理程序(简化):
app.get('/article/:article', function (req, res) {
var articleContent = req.params.article;
res.locals.articleContent = 'data/'+articleContent;
return res.render('article.ejs')
})
在 article.ejs 中(假设使用 ejs-locals):
<% layout('layout') -%>
<section>
<article class="single-country">
<% include ???articleContent??? %>
</article>
</section>
有没有可能这样做,或者唯一的选择是加载文章内容并将其放入articleContent中,以便通过<%- articleContent %>
访问?
这种解决方案的问题是,文章的内容应该是纯HTML(`<%--%>'不插值)。因此,如果我需要在文章中使用任何EJS功能,则需要自行编译/渲染。
也许其他人已经知道如何使用EJS的某些动态包含助手来完成此操作,因此不需要额外的代码?