Jade versus EJS, ¿cuáles son los pros y los contras de cada uno y para qué están diseñados?
¿Hay otros motores de plantillas compatibles con Express que sean buenos y por qué?
Jade versus EJS, ¿cuáles son los pros y los contras de cada uno y para qué están diseñados?
¿Hay otros motores de plantillas compatibles con Express que sean buenos y por qué?
Respuestas:
Usé Jade antes. Lo bueno de Jade es que tiene una sintaxis más corta, lo que significa que puede escribir más rápido. El block
en Jade es bastante poderoso, lo que puede ayudarme mucho cuando trato con código HTML complejo.
Por otro lado, es difícil hacer algunas cosas simples en Jade, como agregar clases en un DIV basado en una simple condición if. Necesito poner algo como esto
- if (isAdmin)
div.admin.user
- else
div.user
Jade tampoco diferencia entre las etiquetas y las variables que hacen que el código sea muy confuso (al menos para mí)
a(href='/user/' + user.id)= user.name
Jade tampoco es amigable con los diseñadores. Mis amigos diseñadores a menudo me dan HTML y CSS (cambiaron a MENOS recientemente pero todavía quieren usar HTML), y por esa razón, si uso Jade, necesito convertir HTML a Jade. También en Jade, necesitamos usar sangrías, por lo que si su estructura HTML se complica, su código se verá horrible (especialmente las tablas). A veces, ni siquiera sé en qué nivel estoy
table
thead
tr
td
a
img
tr
td
tbody
tr
td
Recientemente, hice un cambio a EJS y estoy contento con él hasta ahora. Es muy parecido al HTML puro y usa la misma sintaxis que la del motor de plantilla de interfaz que estoy usando (plantilla de subrayado). Debo decir que todo es más fácil con EJS. No tengo que hacer toda la conversión cuando recibo plantillas HTML de mi amigo diseñador. Todo lo que tengo que hacer es reemplazar las partes dinámicas con variables pasadas desde ExpressJS. Las cosas que me vuelven loco al usar Jade se resuelven en EJS
<div class="<%= isAdmin? 'admin': '' %> user"></div>
Y puedo saber qué es qué con EJS
<a href="/user/<%= user.id %>"><%= user.name %></a>
Si echas de menos la sintaxis corta de Jade (como yo), puedes combinar Zen-Coding y EJS, lo que puede ayudarte a acelerar el progreso en general. Sobre el rendimiento, no veo diferencias
Sin embargo, EJS no es tan poderoso como Jade, no tiene bloques por defecto (este tipo implementó una función de bloqueo para EJS https://github.com/RandomEtc/ejs-locals )
Por lo tanto, depende totalmente de ti elegir lo que te haga sentir cómodo. Pero si va a usar otro motor de plantilla para la interfaz como yo, es mejor si usa lo mismo para ambos lados
Actualización 16 de diciembre de 2013: Recientemente, cambié de EJS a Swig (que tiene un concepto similar al de Jinja2 en el mundo de Python). La razón principal es la falta de bloqueo en EJS incluso con la ayuda de ejs-locals
. Swig también está usando HTML simple para plantillas y muchas características interesantes que un motor de plantillas debería tener, por ejemplo, filtros y etiquetas que EJS no tiene.
Jade
uno o dos años. Quizás esté mejorando ahora. Sin embargo, al volver a calificar mi primer punto, no será fácil evitar eso
No diría que uno es mejor que el otro. Son diferentes, eso es seguro, pero "mejor" es un término bastante relativo.
Prefiero EJS porque creo que HTML no es tan malo, además me permite trabajar con otros sin que ellos tengan que aprender Jade.
Sin embargo, Jade es bastante limpio y crea un código ordenado en sus vistas.
Elija lo que le resulte más cómodo.