Экспресс - Передача данных на все маршруты - PullRequest
5 голосов
/ 18 ноября 2011

Привет, есть ли специальный экспресс-способ сделать некоторые глобальные данные приложения доступными для всех моих маршрутов? Или это просто использование выражения module.exports?

Любые указатели более чем приветствуются. Узел нуб - кстати

Ответы [ 3 ]

11 голосов
/ 18 ноября 2011

Вы можете установить глобальный объект, который также доступен в вашем макете

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
7 голосов
/ 18 ноября 2011

Вы можете использовать app.set() в разделе настройки вашего приложения, чтобы сделать его доступным для каждого запроса.Объект приложения доступен через req.app в ваших маршрутах.

Лично мне нравится делать app.set('name', obj); в настройках, и в маршрутах я получаю к нему доступ через req.app.settings.name.

2 голосов
/ 08 апреля 2012

Вы также можете использовать динамический помощник для передачи данных во все представления.

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 %> 

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...