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