Частичные представления в Handlebars¶
Нередко вeб-страницы в приложении используют какие-то общие элементы. Это может быть меню, шапка сайта, футер, другие элементы. Однако здесь встает проблема: если потребуется поменять этот общий элемент, то придется вносить изменения на все веб-страницы, которые используют этот элемент. И было бы гораздо проще определить этот элемент в одном месте, а затем подключать на все страницы.
Решить эту проблему помогают частичные представления (partial views), которые представляют разделяемые общие элементы, которые можно добавлять на обычные представления.
К примеру, мы можем сделать общее меню и общий футер. Для этого создадим для частичных представлений в проекте подкаталог views/partials
.
Добавим в папку views/partials
новый файл menu.hbs
:
1 2 3 4 |
|
Затем также добавим в views/partials
новый файл footer.hbs
:
1 |
|
Это два частичных представления, которые мы будем подключать в обычные представления.
В папке views
определим обычное представление contact.hbs
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Для вставки частичного представления применяется выражение {{> menu}}
, в котором прописывается имя файла частичного представления без расширения.
Также добавим в папку views
новое представление, которое назовем home.hbs
:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Таким образом, у нас два представления, которые имеют общие элементы. И если нам потребуется добавить какой-нибудь новый пункт меню, то достаточно изменить файл menu.hbs
.
В итоге весь проект будет выглядеть следующим образом:
- app.js
- node_modules
- views
- contact.hbs
- home.hbs
- partials
- footer.hbs
- menu.hbs
В конце изменим файл app.js
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
Для настройки функционала частичных представлений в коде используется вызов:
1 |
|
который устанавливает каталог, где располагаются частичные представления.
И если мы запустим проект и обратимся по одному из двух маршрутов: /
или /contact
, то после рендеринга представления веб-страница будет содержать меню и футер: