# Передача данных в представление 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>`

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

←→
↑