2011-11-26 11 views
16

Alcuni background: Sto progettando di creare un'applicazione con Django come backend e utilizzando Backbone.js come framework Javascript frontend. Si tratta di un'applicazione a singola pagina (SPA) e questo è il motivo per cui ho deciso di utilizzare Backbone.js. L'applicazione è simile a un motore di blogging; gli utenti inviano voci contenenti testo e immagini e sono in grado di visualizzarle per "tag". Possono cercare tra le loro voci per "tag" o per una parola particolare.Uso di Node.js con Django e Backbone.js

Ultimamente dopo aver sentito parlare di tutte le storie su Node.js, mi chiedo come può aiutare la mia applicazione? Ma non voglio far funzionare l'app puramente su node.js sul backend, cioè voglio ancora usare Django per il backend. Sarebbe possibile utilizzare il nodo per "middle end" come indicato here?

Come posso ottimizzare la mia app con Node.js?

risposta

23

Sembra che l'applicazione non abbia necessariamente bisogno di Node.js. I motivi principali per cui potresti voler utilizzare Node, oltre a un framework più tradizionale come Django o Rails, sono se nella tua applicazione ci sono aspetti in tempo reale o multiplayer.

Non vorrei usare Node.js perché c'è un sacco di confusione - se avete bisogno della funzionalità di cui sopra, però, può essere fantastico.

Un'architettura ad alto livello della vostra applicazione potrebbe essere simile:

Django

  • Servire la pagina singola
  • attività a servizio (css, js, immagini, ecc ...)
  • Gestione connessione DB - la soluzione migliore per impostare percorsi RESTful per ciascun modello di dati
  • Elaborazione dati, ecc ...

Backbone

  • Handling interazione con l'utente
  • richieste Fai HTTP per leggere e scrivere dati

Node (opzionale)

  • Usa qualcosa come Socket.io notifichino ai clienti aggiornamenti (invece di polarizzazione)
  • È possibile sostituire la funzionalità di Django con uno o una combinazione di moduli nodo
+2

> meglio impostare percorsi RESTful per ciascun modello di dati Oppure è possibile utilizzare Tastypie. – ustun

+1

Grazie per quello. Molto utile! –

4

Se ti trovi bene con Python e Django in in generale, mi consiglia di utilizzare un server Web come Tornado. È molto facile da usare e ha una curva di apprendimento ripida se hai familiarità con Django. In generale, vedrai miglioramenti delle prestazioni e avrai la possibilità di implementare funzionalità altrimenti "oscure", come la programmazione di Comet.

Per quanto riguarda il frontend, sì, Backbone è una scelta eccellente, ma tieni d'occhio anche il Coffeescript ...

+0

"apprendimento ripido" - intendevi una curva di "apprendimento piatto"? – Forethinker

+1

beh, è ​​oscuro :) http://english.stackexchange.com/questions/6209/what-is-meant-by-steep-learning-curve – hymloth