gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:42:17 25 4
gpt4 key购买 nike

我在解决这个问题时遇到了问题。我正在尝试在新的 expressjs 应用程序中使用 hogan.js(通过 hogan-express),但我也想在前端使用 hogan.js(我将在其中使用 Backbone、lodash 等)。

我正在使用我拥有的布局

    ...
{{> header }}
{{{ yield }}}
{{> footer }}
...

然后,在布局的底部我有:

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

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

    <section>{{name}}</section>

我需要被 hogan-express 忽略,所以前端的 hogan 会处理它。

现在,我不介意更改 hogan-express 的分隔符。我试过了,它起作用了,但是……使用自定义定界符会中断 {{{ yield }}} 调用。我尝试使用 <% %> 作为分隔符并将 yield 更改为 <%{ yield }%> (以及它的各种变体)但似乎没有任何效果。

关于如何在 hogan-express 中使用自定义分隔符而不破坏“yields”有什么想法吗?

谢谢!

最佳答案

我遇到了和你一样的情况。我找不到一个简单的解决方案,所以我使用了一个混合的解决方案,通过结合其他建议的想法使其实际工作。我同时使用 hogan-expresshogan-express-partials

  1. 使用上面关于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());
  2. 在包装模板中手动设置 yield 插值。请注意,我暂时手动切换定界符以使用默认值。

    <%> nav %>

    <div class="container">

    <!-- Switch to use original delimiters -->
    <%={{ }}=%>
    {{{ yield }}}

    <!-- Switch back to delimiters that don't conflict with angular -->
    {{=<% %>=}}

    </div>

    <%> footer %>

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

关于javascript - 使用自定义分隔符 hogan-express 和处理 {{{ yield }}},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22310506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com