我想知道是否可以使用带有不同标签的ej进行双重渲染。
例如我有这个ejs模板
<@= test @>
<% for(var i=0; i<people.length; i++) { %>
<li>
<%= people[i].name %>
</li>
<%
}
%>
在node.js中,我使用默认标记(&lt;%)或使用某些已定义的标记(&lt; @)进行渲染
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}))
}
});
};
答案 0 :(得分:2)
首先,通过提供回调函数来调用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}));
};
});
};