2013-12-13 12 views
10

Express JS utilizza i modelli per generare HTML e quindi il server li invia al client in risposta. Potrebbero esserci molti altri modelli da cui è possibile generare HTML. Quelli che ho avuto modo di scoprire sono:AngularJS con modelli Express o HTML puro? Pro e contro?

Nella mia app, ho bisogno di usare entrambe le ExpressJS e AngularJs. Sono nuovo di entrambe le tecnologie. Mentre imparavo dall'angolare, dovevo usarlo in puro HTML. Dopo aver appreso ExpressJs, mi sono reso conto che, per poter utilizzare angularjs, ho bisogno di usarli in uno dei modelli sopra riportati che saranno convertiti in HTML durante l'invio al client.

Ora, voglio usare expressjs come mio server e angularjs come la mia app lato client. Per questo, penso di avere due opzioni.

Opzione 1

posso smettere di usare i modelli del tutto e utilizzare il nostro server NodeJS di rispondere con l'invio di file HTML semplici. Questi file HTML conterranno quindi la codifica AngularJS al loro interno. AngularJS, quindi, dal lato client, fungerà da nostra applicazione. Richiederà altri documenti HTML dal server. Oppure può anche essere usato come AJAX, dove possiamo solo richiedere le informazioni per aggiornare solo parte della pagina, piuttosto che aggiornare l'intera pagina per una piccola modifica.

Opzione 2

posso usare angularjs expressjs all'interno modelli (giada o ejs).

Gentilmente, aiutami a capire i pro ei contro di entrambe le opzioni. Quale sarà la tua scelta in questo caso.

+0

si potrebbe anche scrivere modelli html e servirli utilizzando 'express.static()' – klode

+0

perché non utilizzare l'opzione due con modello in frontend e backend. hai il controllo per incasinare o non rovinare l'applicazione – Gaurav

risposta

12

Questa è una domanda di opinione e gli amministratori di Stack Overflow odiano tutto ciò che sa di opinione, ma comunque la mia esperienza e opinione.

Ho fatto un paio di app ora usando file puramente statici (HTML, CSS e JavaScript) con quelli che chiamano un servizio sul back-end per consegnare i dati. Riduce il back-end, qualunque esso sia (ho usato sia Java che Node.js), solo per essere un insieme di URL di servizio, ma funziona molto bene.

  • Hai una linea dura fantastica tra le responsabilità dei due sistemi
  • E 'molto facile da lavorare e testare ognuno indipendentemente
  • bug sono di solito molto chiaramente nel front-end o il back-end (tutto lo da fare è guardare i dati trasferiti per sapere)
  • I servizi di back-end sono pronti per essere riutilizzati per supportare interfacce utente alternative dalla riga di comando o qualcosa di specifico del cellulare se si desidera
  • È possibile utilizzare una tecnologia per il back-end per iniziare (ad esempio Node.js o Ruby on Rails) e quindi passare a qualcos'altro in seguito, se necessario. Finché l'API rimane la stessa, il front-end non lo sa mai.
+3

più vantaggi a questo approccio: 1. le pagine html statiche possono essere servite via CDN e memorizzate nella cache più facilmente dal browser. 2. caricando prima la pagina statica, quindi recuperando i dati dal server per completare le porzioni dinamiche, la pagina può iniziare a caricarsi molto più velocemente rispetto a quando si ottengono i dati dal database e lo si utilizza per creare l'intera pagina prima di inviarli al client. – CodeToad

+0

Buono one CodeToad! La memorizzazione nella cache è un vantaggio eccellente e su cui stiamo lavorando in questo momento. Stiamo cercando di mettere le intestazioni di expires sul nostro JavaScript che consentirebbe loro di essere messe in cache per un massimo di un anno e di mettere in atto un meccanismo che ci permetta di distruggere quella cache se necessario. Dovrebbe far avanzare molto velocemente i carichi di pagina. Avrei dovuto elencarlo. –

+0

Devo ammettere che il servizio di html statico e il caricamento del contenuto asincrono (usando angolare) sono più veloci di quelli sul lato server. Ma solo pensando ... e se alcuni menu di alcune parti della pagina sono soggetti ad autorizzazione (diritti di accesso)? Può l'angolare gestire molto bene? E potrebbe colpire prima che sia completamente caricato, non è così bella esperienza utente giusto? – aheryan

2

Sono andato con l'opzione 1 perché non volevo affrontare eventuali problemi con jade o ejs che convertono il modello in modo errato e interferiscono con Angular. La mia app ha essenzialmente la pagina indice (che è in realtà solo il modello di pagina di base con i miei css e js include) escono da Express come jade e poi angolare la prende lì e tutti i miei modelli angolari sono in una posizione separata rispetto al mio modello di giada .

3

Personalmente uso AngularJS con Express/Jade. L'installazione è in realtà piuttosto semplice e trovo la scrittura di Jade molto più piacevole della scrittura HTML. Ho anche adottato la scrittura del mio codice angolare in CoffeeScript poiché, di nuovo, rende più rapido lo sviluppo. Se stai cercando di salvare le sequenze di tasti, Jade è un'ottima soluzione e la sua integrazione con Express lo rende un gioco da ragazzi. Se non sei preoccupato di produrre codice più rapidamente, non c'è alcun problema con l'utilizzo di HTML.

Farò notare che uno dei più grandi vantaggi che ho trovato utilizzando Jade su HTML è la possibilità di sviluppare una singola pagina in più file, quindi utilizzare include per averli concessi prima della compilazione in HTML. Ciò consente di prendere pagine più grandi e di suddividerle in blocchi più gestibili. Insieme al templating di Angular, questo può alleviare molte frustrazioni.

In realtà è solo una questione di opinione, ma dal momento che ho deciso di dare a Jade uno scatto, non me ne sono pentito e non ho mai avuto una situazione in cui il mio codice HTML è stato reso in modo errato quando si utilizza Angolare.