Quali sono i pro e i contro dei modelli Jade ed EJS per Node.js? [chiuso]


118

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:


178

Ho già usato Jade. La cosa bella di Jade è che hai una sintassi più breve, il che significa che puoi digitare più velocemente. L' blocka 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


1
Per quanto riguarda il non sapere a che livello ti trovi, va detto che jade ha un nuovo supporto per più tag su una singola riga. Dalla documentazione di Jade, "Per risparmiare spazio, jade fornisce una sintassi inline per i tag nidificati." A: img "è equivalente a" <a> <img /> </a> ".
Verdi Erel Ergün

1
Ci ho provato Jadeuno o due anni fa. Forse ora sta migliorando. Tuttavia, riguadagnando il mio primo punto, non sarà facile aggirarlo
Tan Nguyen

1
Hai visto html2jade ?
beatgammit

4
Ti ho fatto quello strumento, ma comunque, ogni volta che il designer mi dà qualcosa, devo fare la conversione (che è fastidioso)
Tan Nguyen

1
Volevo solo notare (riguardo al tuo primo punto sui condizionali) che potresti essere in grado di usare la sintassi ternaria per questo caso d'uso. Vedi questa domanda sull'overflow dello
Rob Gibbons,

43

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.