2012-08-01 31 views
14

Ho letto un paio di articoli sull'utilizzo di nuovi quadri JS come Backbone.js o Ember.jsutilizzando backbone/ember rende django una semplice API REST?

Sono venuto fino a questa affermazione: Se io uso un quadro JS come Backbone.js/Ember.js, Quindi sposto la logica dal back-end (Django) al front-end.

Quindi, Django sarà effettivamente utilizzato solo per i suoi modelli? Ciò significa che Django Views e Django Template non sono più necessari e il back-end Django è un po 'come una API REST "di base" che verrà consumata dal front-end.

Sei d'accordo? È quindi lo scopo di Django in questo caso?

Il backend di django in un'API REST è uno dei casi di utilizzo più adatti quando si utilizza un framework come Backbone.js/Ember.js per il front-end?

Grazie.

risposta

13

Django è perfettamente adatto per essere utilizzato in questo modo, si ottiene comunque l'amministratore, i modelli, l'orm e tutti i plugin di terze parti. Tuttavia, non è incredibilmente veloce, quindi se stai facendo un semplice livello di documento, mappatura REST non relazionale, potresti non voler dare un'occhiata a node.js e mongoDB, per esempio.

Se stai attaccando con Django (come siamo, ci piace la struttura ci dà), è possibile utilizzare uno dei plugin REST:

Se si desidera solo per lavorare con lo sviluppo front-end, checkout il backend-come- a-Service posti come cloudmine.me o firebase.com che gestiscono tutte le cose di backend per voi, per un prezzo ovviamente.

+0

Ok ho provato i primi due. Tuttavia l'integrazione con il backbone non sembra semplice. Sembra che devo scavalcare alcune cose sulla dorsale ... Ci sono dei modi pratici per far funzionare subito uno o l'altro con backbone in un modo semplice con un minimo di configurazione? Grazie. – Michael

+0

Abbiamo un setup DRF e Backbone piuttosto pesantemente personalizzato con sincronizzazione sovrascritta e altro. Usiamo il DRF non per la compatibilità immediata, ma più per la facilità di personalizzazione. Aggiornerò la mia risposta con qualche informazione in più –

+0

Ok, suppongo che dovrò passare attraverso la personalizzazione della sincronizzazione di Backbone ecc. – Michael

0

Sì, questo è tutto. È possibile utilizzarlo per gestire l'autenticazione su risorse e simili e magari utilizzare una vista principale per l'applicazione, ma non sarà necessario utilizzare il modello lato server poiché questi framework sono predisposti per funzionare con la risposta json/xml.

Ecco perché molte persone si stanno spostando verso una combinazione più leggera backend/backbone o ember invece di una soluzione completa come django. Puoi anche usare il tuo django per caching json response che rende la tua applicazione più veloce.

+0

Avete qualche esempio di backend più leggero che può sostituire Django in questo caso? – Michael

1

Django può sembrare inutile una volta che si inizia a pensare a soluzioni di pagina singola e applicazioni Javascript, ma se si desidera che il proprio sito sia "a prova di errore" non sarebbe impossibile sviluppare sia una versione Javascript del lato client del sito come così come un lato backend django in caso di errore dell'utente o del javascript del tuo sito, non riesce a un certo livello. Ovviamente ciò richiede la creazione del sito due volte e probabilmente non è necessario nell'era dei browser moderni, ma tale sarebbe uno dei pochi casi in cui si dovrebbero mescolare i due per una soluzione completa.

0

Lo stiamo facendo e usiamo il pistone Django per renderlo più facile.

0

Normalmente si crea l'intero sito Web sotto Django e solo una pagina sarà una "pagina singola app" utilizzando backbone.js, solitamente quella pagina è una pagina molto interattiva, con molti piccoli aggiornamenti che si verificano frequentemente e che devono essere mostrati molto velocemente all'utente. Questa pagina, a causa del gran numero di modifiche e interazioni dell'utente, è costruita sul lato client in modo da utilizzare le sue risorse PC e non quelle del server, il resto delle pagine può usare django perché ti offre una soluzione molto stabile e sicura framework per il lato server

Problemi correlati