2013-11-29 5 views
0

Я разрабатываю приложение NodeJS, используя Express 3.0 с Swig как мой механизм шаблонов. То, что я хотел бы выполнить, - это передать аргументы рендеринга следующему маршруту. Я хочу этого, потому что у меня есть определенные компоненты сайта, которые существуют на каждой странице моего сайта (боковая панель, навигатор, нижний колонтитул и т. Д.). У каждого из этих компонентов есть виджеты и ссылки, которые включаются и выключаются. Сейчас я делаю следующее, чтобы переключить эти виджеты:Пропустить рендеринг args к следующему маршруту

response.render('network.html', { 
    activeTab: 'network', 
    username: request.session.username, 
    bread_current: 'Network', 
    page_title: 'Your Network', 
    page_subtitle: 'Mordrum', 
    widgets: { 
    navbar: { 
     chats: { 
     enabled: true, 
     color: 'blue', 
     icon: 'chatbubble' 
     }, messages: { 
     enabled: true, 
     color: 'red', 
     icon: 'mail' 
     }, users: { 
     enabled: true, 
     color: 'green', 
     icon: 'person' 
     } 
    } 
    } 
}) 

Существует много аргументов там (в пределах виджетов объекта), что я в конечном итоге повторять несколько раз в моем коде (один раз для каждого маршрута). Мне было интересно, есть ли способ передать аргументы на следующий маршрут.

ответ

2

Если данные являются статическими (они не меняются в ходе запуска вашего приложения), используйте app.locals для его сохранения. Любые данные, хранящиеся там будет автоматически становятся доступными для любых шаблонов:

app.locals.widgets = { 
    navbar: { 
    chats: { 
     enabled: true, 
     color: 'blue', 
     icon: 'chatbubble' 
    }, messages: { 
     enabled: true, 
     color: 'red', 
     icon: 'mail' 
    }, users: { 
     enabled: true, 
     color: 'green', 
     icon: 'person' 
    } 
    } 
}; 

Если данные делает изменения, используйте res.locals вместо этого. Любые данные, хранящиеся там, также будут доступны для любых шаблонов, но только в течение всего жизненного цикла одного запроса. Любое промежуточное ПО может также получить к нему доступ (и при необходимости изменить его).

+0

Большое спасибо, это именно то, что мне нужно! – SirSavary

0

Экспресс-способ сделать это - установить их на res. Предположительно у вас есть промежуточное ПО Widget1. Это установит res.widget1.options, а затем вызовет next(). Затем другое промежуточное ПО установит res.widget2.options и так далее.

Смежные вопросы