// project/layouts/main.hbs
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
{{{@body}}}
</body>
</html>
// project/views/home-public.hbs
{{> nav-public}}
<div class="container">
<div class="starter-template">
<h1>Home Public</h1>
<p class="lead">This is my home.</p>
</div>
</div>
// project/partials/nav-public.hbs
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Example</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="/">Journey</a>
</li>
<li><a href="/">Departures</a>
</li>
<li><a href="about" style="margin-left:1em">About</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="/signout">Sign in</a>
</li>
</ul>
</div>
</div>
</nav>
运行的节点代码:
app.use(handlebars({
defaultLayout: 'main'
}));
app.use(function* () {
yield this.render('home-public', {
user: {
email: "name@example.com"
}
});
});
我看不出有什么问题。有什么想法吗?
答案 0 :(得分:0)
这个一开始也让我抓狂了。原因是你在{{> partial-name}}
电话中使用了连字符和/或路径分隔符,这在你来自快递把手时似乎是合理的。答案在文档中:
partialId(文件)
与布局和视图相比,此函数稍微向后,但它需要一个部分模板文件的路径。 (相对于partialsDir)并将其转换为友好的车把标识符。
例如:“navigation.hbs”=&gt; “导航”
默认情况下,它会删除扩展名和驼峰大小写的剩余字符串。
例如:“nav / main.hbs”=&gt; “navMain”强>
基本上,默认情况下,它会将您的部分路径完全转换为camelCaseForHyphensAndDirectorySlashes,例如example/my-partial
需要部分调用{{> exampleMyPartial }}
。
幸运的是,如果您更喜欢使用实际代表部分文件路径的部分名称,那么很容易定制。这是我使用的配置(我使用strip-extension模块来摆脱文件扩展名):
var stripExtension = require('strip-extension');
app.use(koaHandlebars({
partialId: function(file) {
// Note: the .replace below is just to normalise windows paths, you
// may not need it.
return stripExtension(file).replace('\\', '/');
}
});