有没有办法总是将一些数据发送到渲染引擎?

时间:2014-05-14 17:54:07

标签: node.js express pug

我用jade运行express.js。现在我意识到每次都需要将用户对象发送给jade:

var renderObject = {
    navigation: [{
        url: "/",
        title: "Home"
    }],
    user: user
}
res.render('MyTemplate', renderObject);

但是,我对项目非常深入,并且有许多调用res.render的路由。所以现在,像我一样懒惰,我开始研究是否有一种方法可以在实际调用渲染器之前插入渲染器。

伪代码:

 app.beforeRendering(function(template,renderObject,next) {
      renderObject.user = GLOBAL.myUserObject;
 })

1 个答案:

答案 0 :(得分:1)

您可以在res.locals上设置要包含在所有渲染中的属性:

res.locals.nav = [{
  url: "/",
  title: "Home"
}];
res.locals.user = user;

或者可以一步替换整个对象:

res.locals = {
  navigation: [{
    url: "/",
    title: "Home"
  }],
  user: user
};