2012-12-17 14 views
6

Ich habe eine Backbone.js Einzelseiten-App, die alle mit dem Router eingerichtet ist (naja, eigentlich eine Backbone.Marionette App mit einem Backbone.Marionette AppRouter, aber trotzdem). Das Backend basiert jedoch auf Django, wo ich nicht über die URL conf auf Ansichten für alle URLs zugreifen kann, die sich bereits auf den Routen von backbone.js befinden.Django URL conf und Backbone.js Router

Basierend auf den vorhandenen URLs im Django URL conf, wird Backbone.js die Backbone-Routen bedienen, unabhängig davon, was im Django conf aufgelistet ist - es scheint etwas zu sein, alles muss nur da sein.

Muss ich richtige Django-Ansichten haben, um eine Alternative für ältere Browser/SEO zu bieten?

Was sind die besten Methoden, um den Django URL conf und den Backbone.js Router zu koordinieren?

Antwort

2

Ich habe einen Beitrag gefunden, die sehr gut dieses Problem behebt:

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

Kurz gesagt, meine Argumentation einen Rückfall für die Aufnahme ist für Nicht-JavaScript-Browser und SEO Gründe. Zum Zeitpunkt dieses Beitrags machen Nicht-Javascript-Browser ~ 1,4% (weniger als 2% von allem, was ich gelesen habe) von Nutzern aus, was SEO die wichtigste Überlegung macht. Auch hier ist SEO möglicherweise nicht relevant für jeden, der diesen Beitrag liest. In diesem Fall kann dies übersprungen werden.

Ich fand Thomas Davis Tutorial mit phantom.js ziemlich hilfreich. http://backbonetutorials.com/seo-for-single-page-apps/

Ein anderes Problem, das ich berücksichtigen musste, war die History-API, die von allen außer den neuesten IE-Browsern vernachlässigt wurde. Angesichts der Benutzer meines Kunden, von denen etwa 15% IE < = 9 verwenden, war dies auch ein Problem.

Am Ende musste ich auch history.js verwenden. Alles in allem war dies eine Menge Arbeit, um eine ansonsten sehr einfache Webseite zu aktualisieren. Allerdings habe ich viel gelernt von dieser Tortur.

1

Meiner Meinung nach, wenn Ihre Backbone-App wirklich eine einzige Seite ist, dann brauchen Sie keinerlei Django-Ansichten. Sie können Ihre index.html als statische Datei (in der Produktion, nicht einmal per Django) bereitstellen und dann den Backbone-Router, wie Sie es bereits tun, um Ihre URL-Konfiguration kümmern. Sie können die Backbone-Historie verwenden und zu gefälschten URLs, URL-Parametern usw. für Ressourcen in Ihrer App navigieren.

+0

Danke! Ich hatte gehofft, ein Nicht-Javascript-Fallback zu erklären und SEO zu berücksichtigen. Siehe meine Antwort oben. – snakesNbronies

Verwandte Themen