Доступ к запросу или сеансу Express.js из шаблона Jade
Вопрос
Мне интересно, есть ли простой способ получить доступ к переменным req или сеанса Express.js из шаблона Jade, не передавая его через обычный ответ.
Или это единственный выход?
родовое словоРешение
Вам потребуется создать общий кодовый код для Express.
родовое слово Затем внутри вашего шаблона вы можете использовать dynamicHelper
или что-то еще.
Примечание. dynamicHelpers не рекомендуется в Express 3
Другие советы
Просто добавьте
родовое словоДо
родовое словои получите сеанс в нефрите
родовое слово В Express 3.x, dynamicHelpers были удалены, поэтому вам нужно будет использовать комбинацию промежуточного программного обеспечения и res.locals
.Допустим, мы хотим получить доступ к сгенерированному кодовому тегу в виде сгенерированного кода кода:
Теперь для любого маршрута, использующего промежуточное программное обеспечение req.query
, будет установлен набор /signup/new
.Затем он будет доступен в вашем представлении как localQuery
.
просто используйте промежуточное ПО.
родовое словоПосле чего вы можете использовать "# {req}" для ссылки на него в шаблоне нефрита.
Предположим, у вас есть объект user в req, а у user есть метод isAnonymous, если ваш user.isAnonymous () возвращает true,
родовое словобудет отображаться как:
родовое словоэто сработало для меня
родовое словов представлении пользователя pug или jade
родовое словоХотя в javascript всегда есть способ выйти из области видимости и ползти вверх, я действительно действительно действительно действительно действительно настоятельно рекомендую вам найти другой способ.
Подумайте о том, о чем вы спрашиваете: могу ли я узнать свое мнение о внутренностях моего контроллера?
Или то, о чем вы на самом деле спрашиваете: могу ли я получить представление о внутренней части моей среды выполнения?
Предполагается, что представление принимает данные и преобразует их в разметку.Это оно.Если вы делаете что-то еще, вы делаете это неправильно.Меня не волнует, насколько это "легко".В этом суть интерфейса.Чтобы точно определить, что передается, и упростить замену одного элемента другим.
Вы можете решить эту проблему с помощью функции рендеринга, в которой вы будете использовать для рендеринга каждого представления, которому требуется переменная сеанса как локальная переменная, доступная в шаблоне (обычно, когда пользователь вошел в систему, например).
Вот пример функции, которую вы можете настроить по своему усмотрению:
родовое словоТогда его можно использовать так:
родовое словои в своем шаблоне нефрита вы можете получить доступ к переменным сеанса следующим образом:
родовое слово