Частичные представления в 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, то после рендеринга представления веб-страница будет содержать меню и футер:
