Layout в Handlebars¶
Файл layout или мастер-страница позволяет определить общий макет всех веб-страниц сайта. Благодаря чему гораздо проще обновлять сайт, определять и менять какие-то общие блоки кода.
Для работы с файлами layout установим в проект модуль express-handlebars с помощью следующей команды:
1 | |
Пусть в проекте в папке views/partials будут определены два частичных представления для меню и футера. Первое представление - menu.hbs:
1 2 3 4 | |
И второе представление - footer.hbs:
1 | |
Создадим в проекте в папке views новый каталог layouts и определим в нем файл layout.hbs, который будет определять макет сайта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Здесь внедряются частичные представления menu.hbs и footer.hbs. И, кроме того, здесь также присуствует такое выражение, как {{{body}}}. Вместо этого выражения будет вставлять содержимое конкретных представлений.
Затем в папке views определим два обычных представления. Представление contact.hbs:
1 2 3 | |
И представление home.hbs:
1 | |
Эти представления не содержат элементов body, head, каких-то общих блоков, так как все они определены в файле layout.hbs.
Далее опредлим следующий файл app.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | |
Для использования файлов layout необходимо настроить движок hbs:
1 2 3 4 5 6 7 8 | |
Функция expressHbs осуществляет конфигурацию движка. В частности, свойство layoutsDir задает путь к папке с файлами layout относительно корня каталога проекта. Свойство defaultLayout указывает на название файла, который будет использоваться в качестве мастер-страницы. В нашем случае это файл layout.hbs, поэтому указываем название этого файла без расширения. И третье свойство - extname задает расширение файлов.
В итоге весь проект будет выглядеть следующим образом:
Пример работы приложения:

