# Общий макет сайта в Handlebars в Express

Шаблонизатор Handlebars позволяет легко сделать один общий макет сайта, к которому будет подключаться изменяющийся контент сайта. Давайте сделаем это. Для этого в папку `views/layouts` поместите файл `main.hbs` со следующем содержимым:

`<!DOCTYPE html> <html> <head> <title></title> </head> <body> <header> header </header> <main> {{{body}}} </main> <footer> footer </footer> </body> </html>`

В папку `views` поместите файлы `page1.hbs`, `page2.hbs`, `page3.hbs`. Это будут подключаемые контенты страниц нашего сайта.

Давайте теперь напишем маршруты для наших файлов. Для этого вместо метода `send` напишем метод `render`. Этот метод будет брать указанный файл контента, брать макет сайта, и вставлять в него вместо команды `{{{body}}}` контент страницы. При этом в методе `render` расширения файлов указывать не нужно - и так подразумевается, что они `hbs`.

Итак, вот наши маршруты:

`app.get('/page/1/', function(req, res) { res.render('page1'); }); app.get('/page/2/', function(req, res) { res.render('page2'); }); app.get('/page/3/', function(req, res) { res.render('page2'); });`

Перепишем наши маршруты в один с использованием параметра:

`app.get('/page/:page/', function(req, res) { res.render(req.params.page); });`

Сделайте `5` файлов с контентом и один общий макет сайта. Напишите маршрут, отдающий соответствующий файл.

Модифицируйте ваш код так, чтобы при запросе отсутствующего файла выполнялся рендеринг специального файла для `404` ошибки с выдачей соответствующего статуса.

← →
↑