2012-02-17 3 views
1

Это хорошая идея иметь/добавлять логику внутри шаблона javascript, например, так?Добавление логики внутри шаблонов JS? Хорошая идея или нет?

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

Как влияет время рендеринга? Это большая разница?

+1

какой язык вы используете? jsp? – alfasin

+0

Это использует шаблонную структуру underscore.js. –

ответ

3

В общем, разумно избегать логики в шаблонах, хотя условно выводя блок, если инициализировано какое-то значение, это нормально.

Ниже, я бы не проблема с:

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

для вашей ситуации, я хотел бы сделать это. В вашем <head> (или CSS):

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

В шаблоне:

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

Я не уверен насчет поддержки браузера для `: empty' псевдо-селектор, но на всякий случай вы может также сделать:

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

Да, я согласен с вами в подходе CSS, но я просто дал простой пример в подчеркивании, сохраняя при этом понятие вопроса о том, следует ли использовать логику внутри шаблонов. –

+0

В этом случае это очень широкий вопрос и трудно ответить. Различные удары для разных людей. –

+0

Хорошо, спасибо за помощь. –

1

В общем, логика не должна быть в шаблонах. Логика должна быть в моделях и контроллерах, чем больше в моделях и тем меньше в контроллерах, тем лучше.

Однако, в конкретном примере, который вы представили, условное на самом деле не является логическим, это больше похоже на то, чтобы убедиться, что шаблон не сломается. Таким образом, концептуально такая «логика» должна присутствовать в представлении.

Я думаю, что документация Django на их шаблонах делает хорошую работу, отделяя (и объясняя) логику, которая идет в шаблонах, и логику, которая на самом деле не работает в шаблонах. https://docs.djangoproject.com/en/dev/ref/templates/builtins/

+0

Спасибо за ввод. –

Смежные вопросы