Я пытаюсь лучше понять, как работает Handlebars, прежде чем сам приступить к его использованию в качестве инструмента.
Итак, я установил свою песочницу с экспресс-CLI, указав руль в качестве моего механизма просмотра (express --view = hbs sandbox), и он сгенерировал соответствующую файловую структуру.
После того, как я установил и запустил универсальное приложение как есть и перешел на localhost: 3000 / мне предоставляется ожидаемая страница Express.
Насколько я понимаю, при переходе к '/' я запускаю маршрутизатор, указанный в './app', и, в конечном счете, он находится в './routes/index.js'
...
var indexRouter = require('./routes/index');
...
app.use('/', indexRouter);
Если я посмотрю на этот маршрут, то увижу, что он ссылается на «индекс» как на свое представление и передает переменные вместе с ним в указанное представление.
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
Когда я перехожу к представлению './views/index.hbs', я вижу, что переданная информация используется в тегах h1 и p.
<h1>{{title}}</h1>
<p>Welcome to {{title}}</p>
Если я захожу на «./views/layout.hbs» и делаю там изменения, они выражаются, когда я посещаю «index».
<!DOCTYPE html>
<html>
<head>
<title>{{title}}</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>Just Checking!</h1>
{{{body}}}
</body>
</html>
Нет ссылки на «layout.hbs» ни в маршруте, ни в представлении «index».
Когда я пытаюсь выяснить, что делает движок вида, я могу только попытаться исследовать тот факт, что это элемент руля с тремя скобками вместо двух, что неоднократно приводило к простому объяснению «Unescaped Element»(Пример: https://mustache.github.io/mustache.5.html)
Как layout.hbs влияет на index.hbs? Может ли это использоваться аналогично «блокам» в pug?
Дополнительные исследования:
ItПохоже, что был задан похожий вопрос ( Что означает `{{{variable}}}` на руле? ), и ответ таков, что я нашел, но он не объясняет {{{body}}} и как это берет в информации индекса.