2014-07-15 16 views
11

Abbiamo un sito web di ruby ​​on rails che utilizza un sacco di rail costruiti in ajax remoti con template js. Abbiamo nuovi requisiti che ci stanno portando nella direzione di un'applicazione a singola pagina in cui interi blocchi e colonne della pagina saranno basati su ajax.Quando utilizzare un framework js?

Dovremmo continuare a utilizzare l'infrastruttura ajax su rotaie o iniziare a incorporare un framework js come angularjs? In altre parole quali sono i principali criteri di valutazione per determinare la necessità di un quadro di riferimento?

risposta

4

Personalmente, penso che una volta avete risposte ajax che devono potenzialmente aggiornare più aree non adiacenti della pagina, è sicuramente il momento di introdurre un framework JS. Il javascript generato dal server (come quello che ti danno gli aiutanti) è conveniente per cose molto semplici, ma una volta che le cose diventano più complesse, starai meglio restituendo i dati JSON dai binari e facendo in modo che il front-end capisca cosa parti della pagina dovrebbero essere aggiornate.

Non c'è motivo per cui tu debba essere uno o l'altro. Puoi continuare a utilizzare gli helper JS di Rails per le cose semplici, ma nelle pagine in cui ha senso inserire qualcosa come KnockoutJS, Backbone o Angular. Ho introdotto KnockoutJS in questo modo per un'applicazione esistente e ha funzionato abbastanza bene. Ha aiutato a non dipendere da una versione specifica di jQuery e supporta anche i browser più vecchi.

Una cosa che devi decidere è se aggiungere un framework JS tramite un rubygem, o semplicemente scaricarlo e aggiungerlo alla tua pipeline di asset. Il primo modo potrebbe essere più semplice, ma ti legherà anche alla versione inclusa con la gemma, che potrebbe lasciarti indietro un paio di versioni ad un certo punto. Se avessi iniziato una nuova app, probabilmente non userei nessuno dei javascript helper delle rotaie, e forse nemmeno la pipeline degli asset, e uso invece altri strumenti come il grunt per farlo. È quasi una "separazione delle preoccupazioni" con più lavoro in avanti, contro il "compromesso delle batterie".

+0

L'aggiornamento di più aree non adiacenti sembra un criterio chiave. Inoltre, mi chiedo se abbia senso utilizzare Rails per i modelli js pesanti che Rails sta servendo per aree grandi come un dashboard. Se la struttura di js è incorporata in un pezzo di torta, l'API di back-end potrebbe essere alquanto complessa? – Phil

+1

È interessante notare che nessuno ha parlato di 'EmberJS' ... – Askar

1

Un framework javascript come Angular è una buona idea quando è possibile utilizzare un'API JSON più backend per l'origine dati, mantenendo il codice delle guide più leggero. Se stai facendo molte comunicazioni avanti e indietro attraverso AJAX, Angular o persino Backbone puoi renderlo un po 'più pulito. Dipende davvero dal tipo di applicazione che stai costruendo, da come pensi che il front-end dovrebbe essere strutturato e se un framework può aiutarti.

Dato che il codice è già presente nel telecomando vero con js.erb attivo, è possibile utilizzarlo. Mi piacerebbe davvero passare a questo punto se sta diventando un enorme dolore. Cambiare quadro/architettura in un'app esistente può essere un bel po 'di lavoro. Soprattutto se sei nuovo ad angolare.

Recentemente ho lavorato a un progetto al lavoro che sarebbe stato più pesante per il cliente. Ho finito per utilizzare i manubri per il rendering di alcuni modelli e quindi solo alcuni oggetti singleton. La ragione di ciò è dovuta al fatto che non stiamo persistendo molti dati. Solo un paio di campi in un cookie che viene fatto con una richiesta Ajax, e quindi un singolo endpoint JSON per i dati del front-end & utilizzati da questi singletons.

+0

Quindi un altro criterio è se ci sono molti dati e le principali interazioni di inserimento dati usando i moduli html, quindi un framework js sarebbe il modo migliore per andare? – Phil

0

Se sei andato su singola pagina Rails sono ancora grandi come soluzione backend json api. node.js sarà molto più veloce quando eseguirai test di comparazione, ma lo scambierò per la gioia dello sviluppo come Ruby vs JavaScript, ecc. E se avessi bisogno di un altro paio di volte per riscriverlo/svilupparlo nel codice js, questo conta. ..?

Se il progetto non è un tipo di "altro FB o cosa di Youtube", penso onestamente che Rails sia diventato molto tempo fa framework pronto per l'azienda. Questa è una nuova storia finale, ma spero che tu abbia capito il mio punto. Acclamazioni

0

vorrei utilizzare:

  1. Rails API con rabl gemma o simili.
  2. AngularJS.

si investirà tempo a costruire l'API, ma, il front-end sarà più facile con un quadro simile angolare (ho detto, per questo tipo di applicazioni, applicazioni singola pagina)

Problemi correlati