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
задает расширение файлов.
В итоге весь проект будет выглядеть следующим образом:
Пример работы приложения: