Javascript 使用自定义分隔符hogan express和处理{{{yield}}
我搞不清楚这件事。我正在尝试在一个新的expressjs应用程序中使用hogan.js(通过hogan express),但我也希望在前端使用hogan.js(我将使用主干、lodash等) 我正在使用一个布局,其中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"> {{
...
{{> 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-express和hogan-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 %>