使用多个命名部分组装页面

时间:2014-11-27 19:14:06

标签: javascript handlebars.js assemble

使用Assemble和Handlebars,是否可以将页面分成命名部分,并将每个部分附加到父布局的某个区域?很像Asp.net MVC如何@section IM_A_SECTION {}然后@RenderSection(" IM_A_SECTION")。

Page.hbs看起来像

---
layout: layout.hbs
---
{{#content "head"}}
    Header stuff goes here
{{/content}}
{{#content "body"}}
    Body stuff goes here
{{/content}}

而layout.hbs将是

<html>
     <head>
         {{>head}}  
     </head> 
     <body>
         {{>body}}  
     </body> 
</html>

我可以使用Nodejs中的Handlebars工作,但不能在Assemble中工作。

修改:

根据doowb的回答,以下内容解决了上述问题。

Page.hbs:

{{#extend "layout"}}
    {{#content "head"}}
        Header stuff goes here
    {{/content}}
    {{#content "body"}}
        Body stuff goes here
    {{/content}}
{{/extend}}

并且layout.hbs:

<html>
     <head>
         {{#block "head"}}{{/block}}
      </head>
     </head> 
     <body>
         {{#block "body"}}{{/block}}
     </body> 
</html>

在gruntfile.js中,在汇编任务中,将布局文件夹添加到partials文件夹列表中。

assemble: {
    options: {
        partials: ['src/partials/**/*.hbs', 'src/layouts/**/*.hbs']
    }
}

希望别人觉得这很有用。

1 个答案:

答案 0 :(得分:1)

看看这个问题:Assemble: Multiple points of content insertion in layout?

它包含有关如何在汇编v0.4.x中使用帮助程序布局的信息。这些仍将在汇编版本v0.6中提供,但我们希望能够支持更多内置布局选项。