EJS(node.js)中的动态模板

瓦伦汀·史巴诺夫(Valentyn Shybanov)

有谁知道一个很好的解决方案来包含模板,这些模板的名称仅在运行时才知道?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的动态包含助手来完成此工作,因此不需要其他代码?

Ahoffer

看起来EJ S现在已支持此功能。它已在v2.0.1:2015-01-02中引入新语法如下所示

 <%- include(articleContent) %>

为了使它起作用,我必须通过设置禁用Express中的缓存:

app.set('view cache', false);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章