Javascript 使用自定义分隔符hogan express和处理{{{yield}}

Javascript 使用自定义分隔符hogan express和处理{{{yield}},javascript,express,hogan.js,Javascript,Express,Hogan.js,我搞不清楚这件事。我正在尝试在一个新的expressjs应用程序中使用hogan.js(通过hogan express),但我也希望在前端使用hogan.js(我将使用主干、lodash等) 我正在使用一个布局,其中 ... {{> header }} {{{ yield }}} {{> footer }} ... 然后,在布局的底部,我有: <script type="text/template"> {{

我搞不清楚这件事。我正在尝试在一个新的expressjs应用程序中使用hogan.js(通过hogan express),但我也希望在前端使用hogan.js(我将使用主干、lodash等)

我正在使用一个布局,其中

    ...
    {{> header }}
    {{{ yield }}}
    {{> footer }}
    ...
然后,在布局的底部,我有:

    <script type="text/template">
        {{> template }}
    </script>

{{>模板}
到目前为止,这些带分隔符的条目将由hogan express处理,但是插入到{{>template}}调用中的模板包含带分隔符的条目。这看起来是这样的:

    <section>{{name}}</section>
{{name}
我需要被hogan express忽略,以便前端的hogan处理它

现在,我不介意更改hogan express的分隔符。我试过了,效果很好,但是。。。使用自定义分隔符会中断{{{yield}}}调用。我试着用它作为分隔符,并将收益率更改为(以及各种变化),但似乎没有任何效果

你知道如何在hogan express中使用自定义分隔符而不破坏“收益率”吗


谢谢大家!

要在expressjs 4.x中解决这个问题,我使用

app.locals.delimiters = '<% %>';

解决此问题的方法是在模板中设置分隔符胡须样式,而不使用yield:

因此,在您的模板中:

{{=}

这有点老了,但也许这会帮助其他人。

我遇到了与您相同的情况。我找不到一个简单的解决方案,所以我使用了一个混合的解决方案,将其他建议的想法结合起来,使它真正起作用。我同时使用了hogan-expresshogan-express-partials

  • 使用上面关于
    app.locals

    app.set('views', config.root + '/server/views');
    app.enable('view cache');
    app.set('view engine', 'html');
    app.locals.delimiters = '<% %>';
    app.set('layout', 'layout');
    app.set('partials', { nav: 'nav', footer: 'footer' });
    app.engine('html', hoganExpress);
    app.use(partials.middleware());
    

  • 这似乎有效,但我并不特别满意。我研究的解决方案几乎与您的方法相同。我在hogan.js库中发现的另一个奇怪之处是,
    tripleStash
    似乎也允许使用符号(即
    &
    ),但我似乎无法使它工作。

    这救了我的命!谢谢,伙计
    {{=<% %>=}}
    <section><% name %></section>
    <%={{ }}=%>
    
    app.set('views', config.root + '/server/views');
    app.enable('view cache');
    app.set('view engine', 'html');
    app.locals.delimiters = '<% %>';
    app.set('layout', 'layout');
    app.set('partials', { nav: 'nav', footer: 'footer' });
    app.engine('html', hoganExpress);
    app.use(partials.middleware());
    
    <%> nav %>
    
    <div class="container">
    
        <!-- Switch to use original delimiters -->
        <%={{ }}=%>
        {{{ yield }}}
    
        <!-- Switch back to delimiters that don't conflict with angular -->
        {{=<% %>=}}
    
    </div>
    
    <%> footer %>