Ответ 1
Вы можете считать app.locals
глобальным. Некоторые примеры вещей, которые вы можете захотеть сохранить в app.locals
: URL-помощники, константы уровня приложения. Вы должны положить что-нибудь здесь, что вы хотите доступным в каждом представлении.
res.locals
хранит данные только для определенного ответа (который отвечает на конкретный запрос). Например, GET/что-то создаст новый res.locals, который пройдет через все промежуточное ПО, отвечающее на "/something". Соответствующая информация здесь - это материал, например, аутентифицированные данные пользователя из вашего вопроса.
Жизненный цикл выглядит так, где ваши обязанности выделены жирным шрифтом (все остальное делается для вас экспресс):
- создано приложение (var app = express();) Создано
- app.locals
- запрос прибывает
- res.locals создается для этого запроса
- вы добавляете вещи в res.locals как пользовательские роли (res.locals.role = 'admin';)
- вы отвечаете на запрос (res.render('some/view');)
- res.locals для этого запроса - сбор мусора, пропавший
- app.locals продолжает существовать до тех пор, пока приложение существует