2012-12-17 19 views
6

Ho un'applicazione backbone.js a pagina singola che è stata configurata con il router (beh, in realtà un'app Backbone.Marionette con un BackRone.Marionette AppRouter, ma tuttavia). Tuttavia, il back-end è basato su Django, dove non ho l'URL conf che registri le viste per tutti gli URL che sono già nelle rotte backbone.js.Django URL conf e Backbone.js Router

In base agli URL esistenti nell'URL di Django conf, Backbone.js servirà le rotte di backbone indipendentemente da ciò che è elencato nel conf Django - sembra qualcosa, tutto deve solo essere lì.

Devo avere le giuste viste Django per offrire un fallback per i browser più vecchi/SEO?

Quali sono le migliori pratiche per coordinare il conf Django URL e il router Backbone.js?

risposta

2

ho trovato un post che risolve questo problema abbastanza bene:

http://duganchen.ca/single-page-web-app-architecture-done-right/

In breve, il mio ragionamento per l'inclusione di un ripiego è adatta per browser non javascript e le ragioni di SEO. Al momento di questo post, i browser non javascript rappresentano ~ 1,4% (meno del 2% rispetto a tutto ciò che ho letto) degli utenti, rendendo SEO la considerazione principale. Ancora una volta, la SEO potrebbe non essere pertinente per tutti coloro che leggono questo post, nel qual caso, questo può essere saltato.

Ho trovato abbastanza utile il tutorial di Thomas Davis che utilizza phantom.js. http://backbonetutorials.com/seo-for-single-page-apps/

Tuttavia, un altro problema che avevo bisogno di spiegare era l'API di cronologia, che è stata trascurata da tutti tranne gli ultimi browser IE. Dati gli utenti del mio cliente, circa il 15% dei quali utilizza IE < = 9, questo era anche un problema.

Alla fine, avevo anche bisogno di usare history.js. Tutto sommato, questo è stato un sacco di lavoro per aggiornare un sito web altrimenti molto semplice. Tuttavia, ho imparato molto da questo calvario.

1

A mio parere, se l'app backbone è veramente una singola pagina, non è necessario alcun tipo di visualizzazione django. Puoi servire index.html come file statico (in produzione, nemmeno da django) e quindi lasciare che il router di backbone si prenda cura della tua configurazione dell'URL, come già fai tu. Puoi utilizzare la cronologia di backbone e navigare verso URL falsi, aggiungere parametri URL, ecc. Per le risorse nella tua app.

+0

Grazie! Speravo di rendere conto di un fallback non javascript e di dover tenere conto della SEO. Vedi la mia risposta sopra. – snakesNbronies