在JS模板中添加逻辑?好主意还是没有?

时间:2012-02-17 00:11:26

标签: javascript backbone.js underscore.js

在javascript模板中添加/添加逻辑是一个好主意吗?

<time style="display: <%= time ? 'block' : 'none' %>"><%= time %></time>

渲染时间如何受此影响?这是一个很大的区别吗?

2 个答案:

答案 0 :(得分:3)

一般情况下,避免模板中的逻辑是明智的,尽管如果初始化某些值,则有条件地输出块是正常的。

以下,我不会遇到问题:

<% if(time) { %><time><%= time %></time><% } %>

根据您的情况,我会这样做。在<head>(或css)中:

<style>
  time:empty { display: none; }
</style>

在你的模板中:

<time><%= time %></time>

我不确定浏览器对`:empty'伪选择器的支持,但为了安全起见你也可以这样做:

$("time:empty").hide();

答案 1 :(得分:1)

通常,逻辑不应该在模板中。逻辑应该在模型和控制器中,模型中的越多,控制器越少越好。

但是,在您提供的特定示例中,条件不是真正的逻辑,更像是确保模板不会中断。因此,从概念上讲,视图中应该存在这种“逻辑”。

我认为关于模板的Django文档可以很好地分离(和解释)模板中的逻辑以及模板中没有真正做到的逻辑。 https://docs.djangoproject.com/en/dev/ref/templates/builtins/