Express - 将数据传递到所有路由

时间:2011-11-18 01:34:08

标签: node.js express

您是否有“快速”特定方式可以为我的所有路线提供一些全球应用数据? 或者只是使用module.exports语句?

任何指针都非常受欢迎。 Node noob - btw

3 个答案:

答案 0 :(得分:11)

您可以设置布局中也可用的全局对象

app.js

app.configure(function(){
  app.set('view options', {pageTitle: ''});
});

app.get('/',function(request, response){
  response.app.settings['view options'].pageTitle = 'Hello World';
  response.render('home');
});

layout.jade

!!!
html
  head
    title= pageTitle
  body!= body

答案 1 :(得分:7)

您可以在应用的设置部分使用app.set(),使其可用于每个请求。可以通过路线中的req.app获取应用对象。

就个人而言,我喜欢在设置和路线中app.set('name', obj);通过req.app.settings.name访问它。

答案 2 :(得分:2)

您还可以使用动态帮助程序将数据传递给所有视图。

app.js

// Dynamic Helpers
app.dynamicHelpers({
    appSettings: function(req, res){
        return {name:"My App", version:"0.1"};
    }
});

现在你的观点可以像这样使用它(我在这个例子中使用了ejs,但它应该适用于jade或任何其他视图引擎):

view.ejs

<%= appSettings.name %> 
<%= appSettings.version %> 

希望这有帮助。

相关问题