在尝试自己将其用作工具之前,我试图更好地了解Handlebars的工作方式。
因此,我使用指定命令行作为我的视图引擎的express 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>
在“ index”的路径或视图中均未引用“ layout.hbs”。
当我尝试查找视图引擎在做什么时,我只能真正尝试研究以下事实:它是一个带有三个括号的把手元素,而不是两个,它反复产生了“ Unescaped Element”的简单说明(例如: https://mustache.github.io/mustache.5.html)
layout.hbs如何影响index.hbs?可以和哈巴狗中的“块”类似地使用吗?
其他研究:
似乎有人问过类似的问题(What does `{{{variable}}}` mean in handlebars?),答案也是我所发现的,但是它不能解释{{{body}}}以及它如何吸收索引信息。