Node.js Express3 - промежуточное программное обеспечение для добавления данных рендеринга во все запросы визуализации
Возможно ли через посредство промежуточного программного обеспечения или другого метода добавить данные рендеринга (второй вариант в res.render) для каждого вызова в маршрутах приложений.
Мое приложение использует паспорт для аутентификации, и я хотел бы, чтобы промежуточное ПО всегда добавляло пользовательскую информацию к каждому визуализированному шаблону.
В настоящее время каждый из моих вызовов res.render похож на. Я хотел бы удалить пользователя: req.user и добавить его к функции промежуточного программного обеспечения.
// Page 1
res.render("somepage1",{data : "somepage1", user : req.user});
// Page 2
res.render("somepage2",{data : "somepage2", user : req.user});
Ответы
Ответ 1
Express предоставляет app.locals
и res.locals
, который он автоматически объединяется с явными локалями, переданными в render
обработчиком маршрута.
app.use(function(req, res, next) {
res.locals.user = req.user;
next();
});
В качестве альтернативы вы можете настроить исправление render
. Я бы избегал этого, так как это дополнительные накладные расходы, но если по какой-то причине вам нужно было передать информацию, недоступную до запуска вашего обработчика маршрута, это вариант:
app.use(function(req, res, next) {
var render = res.render;
res.render = function(view, locals, cb) {
if (typeof locals == 'object') locals.user = req.user;
render.call(res, view, locals, cb);
};
next();
});
Ответ 2
Выяснил это.
Вы можете использовать локали в промежуточном программном обеспечении.
app.use(function(req, res, next){
res.locals.user = req.user;
next();
});
Затем в шаблонах используйте.
<h1>User Name:{{user.name}}</h1>
<h1>User Name:{{_locals.user.name}}</h1>
удаp >