【问题标题】:Double rendering with EJS in node.js在 node.js 中使用 EJS 进行双重渲染
【发布时间】:2014-02-19 09:02:45
【问题描述】:

我想知道是否可以使用带有不同标签的 ejs 进行双重渲染。

例如我有这个 ejs 模板

<@= test @>

<% for(var i=0; i<people.length; i++) { %>
    <li>
        <%= people[i].name %>
    </li>
<%
    }
%>

在 node.js 中,我使用默认标签 (

var people = [{"name":"Martin"}, {"name":"Jean"}];

 exports.test = function(req, res) {
    res.render('template', {
        open:'<@',close:'@>',
        people : people,
        test : "Hello world"
    })
}

这段代码将呈现

Hello world <% for(var i=0; i
<%= people[i].name %>
<% } %>

还有这个

var people = [{"name":"Martin"}, {"name":"Jean"}];

 exports.test = function(req, res) {
    res.render('template', {
        people : people,
        test : "Hello world"
    })
}

将渲染

<@= test @>
Martin
Jean

我想找到一种方法来双重渲染它:

Hello world
Martin
Jean

谢谢

解决方案感谢 bnuhero

 exports.test = function(req, res) {
 var people = [{"name":"Martin"}, {"name":"Jean"}];
     res.render( 'test',
          {open:'<@', close:'@>', test : "Hello world"},
          function(err, html) {
            if (err) {
            console.log(err);
              res.send(500, err);
            } else {
              res.send(require('ejs').render(html, {people: people}))
            }
         });
    };

【问题讨论】:

    标签: node.js templates render ejs


    【解决方案1】:

    首先,通过提供回调函数调用res.render()。可能的错误和呈现的字符串都传递给此回调函数。 res.render() 不会自动响应客户端。

    其次,将require('ejs').render() 应用于回调函数中呈现的字符串。

    最后,将结果发送到客户端。

    exports.test = function(req, res) {
      var people = [{"name":"Martin"}, {"name":"Jean"}];
      res.render( 'template',
                  {open:'<@', close:'@>', test : "Hello world"},
                  function(err, html) {
                    if (err) {
                      res.send(500, err);
                    } else {
                      res.send(require('ejs').render(html, {people: people}));
                    };
                 });
    };
    

    【讨论】:

    • 谢谢!工作完美。我编辑了你的代码,虽然有一个小错字,而且出于某种原因,ejs 不喜欢“;”在最后一个 res 的末尾。
    • 如果少于 6 个字符,我将无法编辑,所以我已经用答案编辑了我的问题。再次感谢
    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 2014-08-20
    • 2017-11-17
    • 1970-01-01
    • 2018-11-22
    • 2015-09-25
    • 2014-01-24
    • 2016-06-10
    相关资源
    最近更新 更多