有没有办法在ExpressJS中只渲染一次视图?

时间:2014-02-23 19:21:18

标签: javascript node.js express pug

目前,这是我在访问根页面时在我的server.js上设置视图的方式:

app.get('/', function(req, res){
    res.render('home.jade');
});

在home.jade,

include head
include top
include left
body
    div.container
        p   Welcome to the homepage.

这很好用,但问题是当访问不同的页面时,我每次都必须包含head.jade,top.jade和left.jade。有没有办法简单地只包含一次,并且每次我去另一个页面时只更改了身体部位?我看了一下partials,但似乎在Express 3.0 +中删除了该选项。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式渲染头部,顶部和左侧:

res.render('static.jade', {}, function(err, html){
  // ...
});

指定回调时,不会发送任何响应,结果位于html var。然后你可以用'home.jade'做同样的事情,连接两个结果字符串并用

响应
res.send(concatencated_html);

请记住,渲染标题会生成一个完整的html输出(<html>...</html>),您需要在将其余内容附加到它之前进行修剪(与第二次渲染开始时相同)。

对我而言,将视频文件中的包含保留起来要简单得多。