2012-12-17 11 views
6

Ich habe mehrere Backbone-Apps erstellt und schätze die clientseitige Code-Struktur und Organisation. Ich gehe in die Knotenentwicklung mit Express und bin mir nicht sicher, wie Express und Backbone bei der Verarbeitung von Routen zusammenarbeiten können.Können Backbone- und Express-Router in einer Express-Anwendung zusammenarbeiten?

+0

Backbone.Router ist für clientseitige routing, dh: Verwenden Sie die html5-History-API, um die URL zu ändern, wenn Sie die Seite über Ajax aktualisieren. Was versuchst du zu machen? – jordanj77

Antwort

3

Sie müssen verstehen, dass Knoten und Backbone unabhängig voneinander sind.

  • Knoten ist für die serverseitige (zum Beispiel mit einer Datenbank arbeiten, api dienen etc.).
  • Backbone ist ein Client-seitiges Javascript MVC-Framework, das Ihnen eine Struktur für die Organisation Ihrer clientseitigen Javascript-Anwendung gibt. (Die Anwendung im Browser)

Sie können eine Backbone-Anwendung haben in der Client-Seite, und es kann bis zu jedem Back-End entweder Knoten Haken, Rails, PHP etc ...

Weitere Informationen prüfen MVVM-Muster und Javascript-Frameworks auf der Client-Seite.

http://backbonetutorials.com/why-would-you-use-backbone/

http://addyosmani.com/blog/understanding-mvvm-a-guide-for-javascript-developers/

+1

Sie könnten Backbone-Modelle und Sammlungen und Ansichten und Ereignisse auf der Back-End-Seite und wahrscheinlich sogar der Router mit einigen Anpassungen verwenden –

+0

Das ist korrekt.Ich gab nur einfache Informationen für die Fragesteller, um das Konzept zuerst zu verstehen. –

+1

Danke Serdar, ich habe vergessen zu erklären, dass ich Express benutze. Ich habe ein starkes Verständnis von Backbone und clientseitigem JavaScript. Was ich nicht sicher bin, ist, wie Express-Routing und Backbone-Routing koexistieren können. In einer Backbone-App würde ich es so schreiben, dass, wenn ein Besucher zu/foo navigiert, der foo-Pfad in meinem Router wäre und eine Funktion ausführen würde, die Backbone-Modelle und -Sichten erzeugen würde. In einer Express-App möchte Express jedoch mit diesem Routing umgehen und eine eigene Funktion ausführen (req, res). Können diese zusammenarbeiten oder muss ich eine auswählen? – AndrewHenderson

2

Ein Freund gab mir die Antwort:

Backbone verwendet Hash-Routen. Zum Beispiel http://yoursite.com/#foo

Express wird die traditionelle Verwendung http://yoursite.com/foo

Sie die Router eine unabhängig von anderen basierend man verwenden kann, die man auf den Weg zu adressieren - eine Hash-Route für die clientseitige Funktionen und dem traditionellen Weg für serverseitige Funktionalität .

Beide Router können koexistieren.

1

Ihre Frage, wie Backbone und Express zusammenarbeiten können, kann nicht wirklich genau beantwortet werden, weil es wirklich unzählige Möglichkeiten gibt, wie sie zusammenarbeiten können. Hoffentlich können einige der folgenden Informationen Ihnen helfen, das zu tun, was Sie tun möchten.

Zu allererst Sie können Verwendung www.example.com/foo (keine #) Routen auf der Client-Seite (Backbone) - siehe pushState Option in Backbone.history.start() Dokumentation. Es ist möglich, die Routen auf der Clientseite und auf der Serverseite zu integrieren. Es ist jedoch nicht einfach, genau das zu finden.

Einige der Informationen unter diesen Links können Sie helfen:

Sie haben geschrieben, dass Sie Erfahrung mit Backbone haben, aber Sie bewegen sich in letzter Zeit zu Node, daher nehme ich an, dass Sie für andere Frameworks als nur Express offen sind. Sie können in Erwägung ziehen, z. (zusätzlich zu Express), um einen REST-fähigen Dienst zu erstellen, den Sie in Backbone integrieren können.

Es gibt auch ganze Frameworks wie Derby oder Meteor, die sowohl Client-Seite und Server-Seite mit einer Code-Basis abdecken und Sie können viel mehr als nur die Router teilen.

(Außerdem habe ich gerade in diesem Jahr gefunden (2013) HTML5DevConf Diskussion:. Surviving Robots and Old Browsers by Server-side Backbone Ich habe es noch nicht gesehen, aber es scheint, um Ihr Problem sehr relevant.)

Verwandte Themen