Express 3.0上的HBS模块将文本添加到生成的HTML中

时间:2013-03-21 04:00:39

标签: javascript node.js templates express handlebars.js

我收到这个我很困惑的错误。我正在使用hbs package运行一个快速3.0.6应用程序来进行模板处理。 我正在尝试基于this example为每个视图创建脚本和样式表的块。

出于某种原因,每当我尝试使用帮助程序时,它会在html文件的顶部添加一些数字(作为直接文本)。即使很奇怪,数字会在刷新时发生变化,我不知道出了什么问题,甚至不知道如何弄清楚发生了什么。

blocks = {}
hbs.registerHelper 'extend', (name, context) ->
    block = blocks[name]
    if not block
        block = blocks[name] = []
    block.push(context.fn this)

hbs.registerHelper 'block', (name) ->
    val = (blocks[name] || []).join('\n')
    blocks[name] = []
    return val

在layout.html中:

 <head>
  {{{block "stylesheets"}}}
  {{{block "javascripts"}}}
 </head>

在其他观点中:

{{#extend "stylesheets"}}
  <link ... />
{{/extend}}

{{#extend "javascripts"}}
  <script ... 
{{/extend}}

在输出html中,我得到“1 1”。 1有时会随机改变值,但总有x,其中x是扩展标记的数量。

感谢任何人可能给予的任何见解/帮助!

EDIT :: 另外,我注意到的另一件事是,如果我将块助手更改为:

  {{{stylesheets}}}
  {{{javascripts}}}

数字从1开始,然后每次刷新页面时继续增加1。我不确定发生了什么,但希望这会有所帮助。

1 个答案:

答案 0 :(得分:1)

在'extend'寄存器帮助器中,coffeescript自动返回该方法的最后一个语句的输出,这引起了一个问题。如果我只是在那里留下额外的退货声明,那就有用了。