Pregunta

¿Es una buena idea tener/agregar lógica dentro de una plantilla de JavaScript como así?

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

¿Cómo se ve afectado el tiempo de renderizado por esto? ¿Es una gran diferencia?

¿Fue útil?

Solución

En general, es aconsejable evitar la lógica en las plantillas, aunque la salida condicionalmente de un bloque si se inicializa algún valor está bien.

Lo siguiente, no tendría ningún problema con:

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

Para tu situación, haría esto. En tus <head> (o CSS):

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

En tu plantilla:

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

No estoy seguro del soporte del navegador para el pseudo-selector `: vacío ', pero para estar seguro también podría hacer:

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

Otros consejos

En general, la lógica no debe estar en plantillas. La lógica debería estar en modelos y controladores, cuanto más en los modelos y cuanto menos en los controladores, mejor.

Sin embargo, en el ejemplo particular que presentó, lo condicional no es realmente lógica, es más como asegurarse de que la plantilla no se rompa. Entonces, conceptualmente, ese tipo de "lógica" debería estar presente en la vista.

Creo que la documentación de Django en sus plantillas hace un buen trabajo separando (y explica) la lógica que se encuentra en las plantillas y la lógica que realmente no lo hace en las plantillas. https://docs.djangoproject.com/en/dev/ref/templates/builtins/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top