我从文档中了解到Hogan不支持很多逻辑 - 但是有一些方法可以操纵这个模板系统来做你需要的事情。
基本上,这就是我需要的(伪代码 - 假设people.length> = 1):
{{#if people.length == 1}}
<p>Your contact person is {{name}}.</p>
{{else}}
<p>Your contact people are:</p>
<ul>
{{#people}}
<li>{{name}}</li>
{{/people}}
</ul>
{{/if}}
这在Hogan模板引擎中是否可行,或者我是否需要发送另一个变量来判断我的化妆人阵列中是否只有1个成员?
答案 0 :(得分:2)
不幸的是,没有。如果没有设置不同的变量,就无法使用Hogan。这是Hogan的主要缺点之一(在我看来)。我不同意“它应该是无逻辑的”是这种缺乏功能的理由。 if (true)
和if (a == b)
都是逻辑,但Hogan允许你做一个而不是另一个。我同意你不应该在模板中有逻辑(因为它不能在那里进行单元测试),但Hogan /胡子为此走得太远了。我建议swig为您提供Hogan为您提供的所有内容,加上if
比较,加上循环控制(例如if (loop.first)
),以及更好,更易于阅读的过滤器语法,只需极低的性能命中(根据this不到一秒半超过100,000个模板,不可否认,这是几年前的事。)
编辑:Swig不再维护;但是,Nunjucks与范围和风格非常相似。
答案 1 :(得分:0)
简短的回答不是,它应该是无逻辑的
我刚回答了一个类似问题的问题: Hogan.js - reference an item with a specific index 选择一个