有谁知道一个很好的解决方案来包含模板,这些模板的名称仅在运行时才知道?EJS的include仅允许指定确切的文件/模板名称。
用例:我有一个文章布局,并且某些本地文件中有文章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的动态包含助手来完成此工作,因此不需要其他代码?
看起来EJ S现在已支持此功能。它已在v2.0.1:2015-01-02中引入。新语法如下所示
<%- include(articleContent) %>
为了使它起作用,我必须通过设置禁用Express中的缓存:
app.set('view cache', false);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句