Подтвердить что ты не робот

Жизненный цикл приложения .locals и res.locals

Я действительно смущен app.locals и res.locals, потому что я не знаю, КОГДА я должен использовать их и как? И на самом деле я хочу знать жизненный цикл app.locals и res.locals.

Например, где я должен сохранять данные пользователя (аутентифицированного пользователя) (имя пользователя, роли и т.д.)? В app.locals или res.locals?

4b9b3361

Ответ 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 продолжает существовать до тех пор, пока приложение существует