将模板呈现给expressjs中的variables

有没有办法将模板呈现给variables而不是输出?

res.render('list.ejs', { posts: posts }); 

像这样的东西

 var list = render('list.ejs', { posts: posts }); 

最简单的方法是将callback传递给res.render ,如下所示:

 res.render('list.ejs', {posts: posts}, function(err, list){ // }); 

但是,如果你想呈现部分模板,以便将它们包含在另一个模板中,那么您绝对应该查看视图部分 。

我对express.js是一个新手,无论如何,我不确定你可以通过这种方式访问​​呈现的string,但是如果你看看github上的express.js源代码,你会发现它接受了一个callback第二个参数,如果这可能有帮助:你可以在那里访问呈现的string。

否则,我认为修改代码来添加一个返回呈现的string而不发送它的方法是相当容易的: 在#399行上,你有一个给你所寻找的string的调用。

这不是最初提出的问题,而是基于来自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代码中调用它。