Доступ к запросу или сеансу Express.js из шаблона Jade

StackOverflow https://stackoverflow.com/questions/6331776

  •  27-10-2019
  •  | 
  •  

Вопрос

Мне интересно, есть ли простой способ получить доступ к переменным 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 всегда есть способ выйти из области видимости и ползти вверх, я действительно действительно действительно действительно действительно настоятельно рекомендую вам найти другой способ.

Подумайте о том, о чем вы спрашиваете: могу ли я узнать свое мнение о внутренностях моего контроллера?

Или то, о чем вы на самом деле спрашиваете: могу ли я получить представление о внутренней части моей среды выполнения?

Предполагается, что представление принимает данные и преобразует их в разметку.Это оно.Если вы делаете что-то еще, вы делаете это неправильно.Меня не волнует, насколько это "легко".В этом суть интерфейса.Чтобы точно определить, что передается, и упростить замену одного элемента другим.

Вы можете решить эту проблему с помощью функции рендеринга, в которой вы будете использовать для рендеринга каждого представления, которому требуется переменная сеанса как локальная переменная, доступная в шаблоне (обычно, когда пользователь вошел в систему, например).

Вот пример функции, которую вы можете настроить по своему усмотрению:

родовое слово

Тогда его можно использовать так:

родовое слово

и в своем шаблоне нефрита вы можете получить доступ к переменным сеанса следующим образом:

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top