2013-05-12 16 views

risposta

166

Ho usato Jade prima. La cosa bella di Jade è che hai una sintassi più breve, il che significa che puoi digitare più velocemente. Lo block in Jade è piuttosto potente e può essere di grande aiuto quando si tratta di codice HTML complesso.

D'altra parte, è difficile fare alcune cose semplici in Jade, ad esempio aggiungere classi in un DIV basato su una condizione if semplice. Ho bisogno di mettere qualcosa di simile

- if (isAdmin) 
    div.admin.user 
- else 
    div.user 

Jade anche non distinguere 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 progettista -friendly. I miei amici designer spesso mi danno HTML e CSS (sono passati a LESS di recente ma vogliono ancora usare l'HTML), e per questo motivo se uso Jade ho bisogno di convertire HTML in Jade. Anche in Jade, dobbiamo usare le indentazioni, quindi se la tua struttura HTML si complica, il tuo codice sembrerà orribile (specialmente le tabelle). A volte, io non so nemmeno quale livello sono a

table 
    thead 
    tr 
     td 
     a 
      img 
    tr 
     td 
    tbody 
    tr 
     td 

Recentemente, ho fatto un passaggio a EJS e sono felice con lui finora. È molto vicino al puro HTML e usa la stessa sintassi del motore di template di frontend che sto usando (template Underscore). Devo dire che tutto è più facile con EJS. Non devo fare tutta la conversione quando ricevo i template HTML dal mio amico designer. Tutto quello che devo fare è sostituire le parti dinamiche con le variabili passate da ExpressJS. Roba che mi fanno impazzire quando si utilizza Jade sono risolti in EJS

<div class="<%= isAdmin? 'admin': '' %> user"></div> 

E posso sapere che cosa è quello che con EJS

<a href="/user/<%= user.id %>"><%= user.name %></a> 

se si perde l'breve la sintassi di Jade (come me) è possibile combinare Zen-Coding e EJS che possono aiutarti ad accelerare i progressi in generale. A proposito di prestazioni, non vedo alcuna differenza

Tuttavia, EJS non è così potente come Jade, non ha blocchi di default (questo ragazzo ha implementato una funzione di blocco per EJS https://github.com/RandomEtc/ejs-locals)

Quindi, dipende totalmente da te per scegliere qualsiasi cosa ti renda confortevole. Ma se hai intenzione di usare un altro motore di template per il frontend come me, è meglio se usi la stessa cosa per entrambi i lati

Aggiornamento 16 dicembre 2013: Recentemente, sono passato da EJS a Swig (che ha simili concetto come 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 template dovrebbe avere per esempio filtri e tag che EJS non ha

+1

Per quanto riguarda la mancata conoscenza del livello in cui ci si trova, è necessario ricordare che jade ha un nuovo supporto per più tag su una singola riga. Dalla documentazione di Jade, 'Per risparmiare spazio, jade fornisce una sintassi in linea per i tag nidificati.' A: img 'è equivalente a' '. –

+1

Ho provato 'Jade' uno o due anni fa. Forse sta migliorando ora. Tuttavia, ricordando il mio primo punto, non sarà facile aggirare il problema. –

+1

Hai visto [html2jade] (http://html2jade.com/)? – tjameson

37

Non direi che uno è migliore dell'altro. Sono diversi, questo è certo, ma "meglio" è un termine abbastanza relativo.

Preferisco EJS perché penso che HTML non sia troppo male, in più mi permette di lavorare con gli altri senza che debbano imparare Jade.

Tuttavia, Jade è piuttosto pulito e consente di ottenere un codice accurato nelle visualizzazioni.

Scegli quello che ti senti più a tuo agio.

Problemi correlati