Frage

Ist es eine gute Idee, Logik in einer JavaScript -Vorlage so zu haben/hinzuzufügen?

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

Wie wirkt sich das die Renderzeit davon aus? Ist ein großer Unterschied?

War es hilfreich?

Lösung

Im Allgemeinen ist es ratsam, eine Logik in Vorlagen zu vermeiden, obwohl es bedingt einen Block ausgibt, wenn ein gewisses Wert initialisiert wird.

Im Folgenden hätte ich kein Problem mit:

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

Für Ihre Situation würde ich das tun. In deiner <head> (oder CSS):

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

In Ihrer Vorlage:

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

Ich bin mir nicht sicher, ob die Browser-Unterstützung für den ": leeren Pseudo-Selektor", aber nur um sicher zu sein können, können Sie auch:

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

Andere Tipps

Im Allgemeinen sollte die Logik nicht in Vorlagen sein. Die Logik sollte in Modellen und Controllern sein, je mehr davon in den Modellen und je weniger Controller, desto besser.

In dem jeweiligen Beispiel, den Sie vorgestellt haben, ist die Bedingung jedoch nicht wirklich logisch. Es ist jedoch eher so, als würde sicherstellen, dass die Vorlage nicht brechen. Konzeptionell sollte diese Art von "Logik" in der Ansicht vorhanden sein.

Ich denke, die Django -Dokumentation in ihren Vorlagen leistet eine gute Arbeit, die die Logik, die in den Vorlagen geht, und die Logik, die in den Vorlagen nicht wirklich läuft, zu trennen (und zu erklären). https://docs.djangoproject.com/en/dev/ref/templates/builtins/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top