Jade contro EJS, quali sono i pro ei contro di ciascuno e per quali scopi sono progettati?
Esistono altri motori di modelli compatibili con Express che sono buoni e perché?
Jade contro EJS, quali sono i pro ei contro di ciascuno e per quali scopi sono progettati?
Esistono altri motori di modelli compatibili con Express che sono buoni e perché?
Risposte:
Ho già usato Jade. La cosa bella di Jade è che hai una sintassi più breve, il che significa che puoi digitare più velocemente. L' block
a Jade è abbastanza potente, che mi può aiutare molto quando si tratta di codice HTML complesso.
D'altra parte, è difficile fare alcune cose semplici in Jade, come l'aggiunta di classi in un DIV basato su una semplice condizione if. Devo mettere qualcosa del genere
- if (isAdmin)
div.admin.user
- else
div.user
Jade inoltre non fa differenza tra i tag e le variabili che rendono il codice molto confuso (almeno per me)
a(href='/user/' + user.id)= user.name
Jade inoltre non è adatta ai designer. I miei amici designer spesso mi danno HTML e CSS (sono passati a LESS di recente ma vogliono comunque usare HTML), e per questo motivo se uso Jade devo convertire HTML in Jade. Anche in Jade, dobbiamo usare i rientri, quindi se la tua struttura HTML si complica, il tuo codice avrà un aspetto orribile (specialmente le tabelle). A volte, non so nemmeno a che livello mi trovo
table
thead
tr
td
a
img
tr
td
tbody
tr
td
Di recente sono passato a EJS e finora ne sono soddisfatto. È molto simile al puro HTML e utilizza la stessa sintassi del motore di template frontend che sto usando (modello underscore). Devo dire che tutto è più facile con EJS. Non devo eseguire tutte le conversioni quando ricevo modelli HTML dal mio amico designer. Tutto quello che devo fare è sostituire le parti dinamiche con le variabili passate da ExpressJS. Le cose che mi fanno impazzire quando uso Jade vengono risolte in EJS
<div class="<%= isAdmin? 'admin': '' %> user"></div>
E posso sapere cosa è cosa con EJS
<a href="/user/<%= user.id %>"><%= user.name %></a>
Se ti manca la sintassi breve di Jade (come me) puoi combinare Zen-Coding ed EJS che possono aiutarti ad accelerare i progressi in generale. Per quanto riguarda le prestazioni, non vedo differenze
Tuttavia, EJS non è potente come Jade, non ha blocchi per impostazione predefinita (questo ragazzo ha implementato una funzione di blocco per EJS https://github.com/RandomEtc/ejs-locals )
Quindi, dipende totalmente da te scegliere ciò che ti fa sentire a tuo agio. Ma se hai intenzione di utilizzare un altro motore di modelli per il frontend come me, è meglio se usi la stessa cosa per entrambi i lati
Aggiornamento del 16 dicembre 2013: recentemente sono passato da EJS a Swig (che ha un concetto simile a quello di Jinja2 nel mondo Python). Il motivo principale è la mancanza di blocco in EJS anche con l'aiuto di ejs-locals
. Swig utilizza anche HTML semplice per i modelli e molte funzioni interessanti che un motore di modelli dovrebbe avere, ad esempio filtri e tag che EJS non ha
Jade
uno o due anni fa. Forse ora sta migliorando. Tuttavia, riguadagnando il mio primo punto, non sarà facile aggirarlo
Non direi che uno sia migliore dell'altro. Sono diversi, questo è certo, ma "migliore" è un termine abbastanza relativo.
Preferisco EJS perché penso che l'HTML non sia poi così male, inoltre mi permette di lavorare con gli altri senza che debbano imparare Jade.
Tuttavia, Jade è piuttosto pulito e crea un codice pulito nelle tue visualizzazioni.
Scegli quello che ti senti più a tuo agio.