node.js - handlebars - programacion pug
¿Cuáles son los pros y los contras de Jade y EJS para la creación de plantillas de Node.js? (2)
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 tengan que aprender Jade.
Sin embargo, Jade es bastante limpio y lo convierte en un buen código en sus puntos de vista.
Elija lo que sea que se sienta más cómodo.
Jade versus EJS, ¿cuáles son los pros y 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é?
Yo usé Jade antes. Lo bueno de Jade es que tienes una sintaxis más corta, lo que significa que puedes escribir más rápido. El block
en Jade es bastante poderoso, lo que me puede ayudar mucho cuando se trata de 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 condición simple. 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 el diseñador. Mis amigos diseñadores a menudo me dan HTML y CSS (cambiaron a LESS recientemente pero aún quieren usar HTML), y por esa razón si uso Jade necesito convertir HTML a Jade. También en Jade, necesitamos utilizar 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. Está muy cerca del HTML puro y utiliza la misma sintaxis que el del motor de plantillas de frontend que estoy usando (plantilla de guión bajo). 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 las variables pasadas de ExpressJS. Las cosas que me vuelven loco cuando uso 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 te pierdes la breve sintaxis de Jade (como yo), puedes combinar Zen-Coding y EJS, que pueden 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 bloque 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 plantillas 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á utilizando HTML sencillo para plantillas y muchas características geniales que un motor de plantilla debería tener, por ejemplo, filtros y etiquetas que EJS no tiene.