Шаблонизатор 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
ошибки
с выдачей соответствующего статуса.