Handlebars with Express:不同的html头为不同的页面

我在Express Node.js应用程序中使用Handlebars。我的layout.html文件包含< head>部分。如何使< head>部分不同页面不同? (所以我可以,例如,仅在一个页面中引用一个JavaScript文件,并改变每个页面的< title>)。

layout.html看起来像这样:

<!DOCTYPE html>
<html>
  <head>
    <Meta charset="UTF-8">
    <script src='/public/ajsfile.js'></script>
    <link type='text/css' href="/public/style.css" rel="stylesheet">
  </head>
  <body>
    {{{body}}}
  </body>
</html>

(我想象的是,使用类似于{{{body}}}的{< head>内容,而在{{{head}}}中)

解决方法

这是一个很好的问题,在我看来,Express的观点模式是一个明显的弱点。幸运的是,有一个解决方案:使用Handlebars块助手。这是我为此目的使用的帮手:
helpers: {
    section: function(name,options){
        if(!this._sections) this._sections = {};
        this._sections[name] = options.fn(this);
        return null;
    }
}

然后,在布局中,您可以执行以下操作:

<head>
    {{{_sections.head}}}
</head>
<body>
    {{{body}}}
</body>

在你看来:

{{#section 'head'}}
    <!-- stuff that goes in head...example: -->
    <Meta name="robots" content="noindex">
{{/section}}

<h1>Body Blah Blah</h1>
<p>This goes in page body.</p>

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在&#39;&#39;,则表示换行,用&#39;&#39;切割。
代码实现 option = { backgroundColor: &amp;#39;#080b30&amp;#39;, tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...