Передача данных в представление Handlebars

Из маршрута в представление можно передавать данные. Для этого вторым параметром метода render нужно передать объект с данными:

app.get('/page/', function(req, res) { res.render('page', {text1: 'aaa', text2: 'bbb'}); });

Как вы видите, в моем объекте два ключа: text1 и text2. Это значит, что в файле представления (как в контенте, так и в макете) появятся две переменные с таким именем. Вывести значения этих переменных можно написав их имя в двойных фигурных скобках.

Давайте попробуем. Пусть у нас есть следующий файл контента:

<div> content </div>

Выведем в этом файле наши переменные:

<div> content {{text1}} {{text2}} </div>

Можно вывести их в каких-то тегах:

<div> content <span>{{text1}}</span> <span>{{text2}}</span> </div>

Можно вывести их и в атрибутах тегов:

<div> content <input value="{{text1}}"> <img src="{{text2}}"> </div>

Передайте в контент пять переменных. Выведите каждую переменную в своем абзаце.

Передайте в контент переменную с путем к картинке. Выведите на экран соответствующее изображение.

Передайте в контент переменные с текстом и хрефом ссылки. Выведите в на экран ссылку, созданную с помощью этих переменных.

Экранировка тегов

Для вывода переменных можно использовать как две фигурные скобки, так и три. В первом случае в целях безопасности будет происходить экранировка тегов, а во втором случае теги будут преобразованы в команды для браузера.

Давайте посмотрим на примере. Пусть у нас передается некоторая переменная, содержащая внутри себя теги:

app.get('/page/', function(req, res) { res.render('page', {text: '<b>aaa</b>'}); });

Давайте выведем содержимое переменной с помощью обоих команд:

<div> {{text}} </div> <div> {{{text}}} </div>

Запустите приведенный код у себя в браузере и посмотрите на разницу приведенных команд.