Общий макет сайта в 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 ошибки с выдачей соответствующего статуса.