有没有办法将模板渲染到变量而不是输出?
res.render('list.ejs', {
posts: posts
});
类似这样的事情
var list = render('list.ejs', {
posts: posts
});
答案 0 :(得分:26)
最简单的方法是在您的示例中将回调传递给res.render
:
res.render('list.ejs', {posts: posts}, function(err, list){
//
});
但是如果你想渲染部分模板以便将它们包含在另一个模板中,你肯定应该看看view partials。
答案 1 :(得分:2)
我是express.js上的新手,无论如何我不确定你能以这种方式访问渲染的字符串,不过如果你看一下github(here)上的express'“view.js”来源你看到它接受回调作为第二个参数,如果这可能有帮助:你可以在那里访问渲染的字符串。
否则,我认为修补代码很容易添加一个返回渲染字符串而不发送它的方法:on line #399你有一个调用,它会给你正在寻找的字符串。
答案 2 :(得分:1)
这不是最初提出的问题,但根据OP和其他人的评论,似乎目标是渲染部分通过json(jsonp),这是我必须要做的事情。
这很简单:
app.get('/header', function (req, res)
{
res.render('partials/header', { session: req.session, layout: null }, function (err, output)
{
res.jsonp({ html: output });
});
});
注意:在我的情况下,标题部分需要会话,我的模板库(express-hbs)需要layout: null
来渲染部分而不使用默认布局。
然后,您可以像在任何其他JSONP端点一样从客户端的Javascript代码中调用它。