Ihr Anfangssatz war tatsächlich eine sehr gute Aussage über die Unterschiede zwischen Backbone.js und jQuery. Packen wir ihn also ein wenig aus.
Zum einen stehen die beiden Bibliotheken überhaupt nicht im Wettbewerb - sie sind kostenlos.
Als Beispiel hier einige Dinge, die ich mit jQuery machen würde:
- Animierte Diashows
- Verbesserungen der Formularsteuerung, wie z. B. ein iOS-ähnlicher "Spinner"
- Umschalten der Sichtbarkeit von Elementen basierend auf einem Klassennamen
Und einige Dinge, die ich in Backbone.js tun könnte:
- Erstellen Sie ein Fotoalbum, in dem der Benutzer auf eine Miniaturansicht klickt und eine größere Version des Fotos zusammen mit einigen Daten wie der verwendeten Kamera, dem Standort und dem Namen des Fotografen anzeigen kann
- Erstellen Sie einen Master- / Detail-Seitentyp, der ein Datenraster darstellt und es dem Benutzer ermöglicht, auf einzelne Elemente zu klicken und diese in einem Formular zu aktualisieren.
jQuery zeichnet sich auf Mikroebene aus: Es wählt Seitenelemente aus und gleicht die Unterschiede im Umgang von Browsern mit Ereignissen aus.
Backbone.js ist mehr Gesamtbild. Es hilft Ihnen bei der Verwaltung von Daten und Anwendungslogik. Im obigen Beispiel für ein Fotoalbum bietet Backbone mehrere nützliche Strukturen: Sie müssen alle Daten zu Fotos (ein Modell), eine Liste aller Fotos im Album (eine Sammlung) und einen Platz zum Ablegen enthalten Logik, die bestimmt, was passiert, wenn ein Benutzer auf eine Miniaturansicht (die Ansicht) klickt. Dies sind die Hauptbestandteile einer Backbone-Steuerung oder -Anwendung.
Backbone.js profitiert jedoch von jQuery oder ähnlichem, um die Ergebnisse der Daten und der Logik Ihrer Anwendung in das DOM zu rendern. Es ist beispielsweise üblich, jQuery zu verwenden, um das Element auf der Seite auszuwählen, das als Container für Ihre Backbone-App dient. Es ist auch üblich, jQuery's $(function () {});
zu verwenden, um die Teile Ihres Backbone-Steuerelements zu starten. Wahrscheinlich würden Sie auch mit jQuery Fehlermeldungen zur Formularfeldüberprüfung anzeigen.
Sie können in jQuery sicherlich große, komplexe Benutzeroberflächen erstellen. Wir haben einige in der App, die ich bei der Arbeit pflege. Es ist jedoch schwierig, mit ihnen zu arbeiten, da jQuery nicht dafür ausgelegt ist, einer Anwendung Struktur zu verleihen. Insbesondere die jQuery-API, die darauf basiert, Gruppen von Elementen auszuwählen und dann Rückruffunktionen zu übergeben, die diese Elemente bearbeiten, ist kein gutes Muster für ein großes, komplexes Steuerelement oder eine App. Sie haben am Ende viele verschachtelte Funktionen und es ist sehr schwer zu sehen, was los ist.
Ich überarbeite derzeit eines dieser Steuerelemente in Backbone.js. Als letztes Beispiel finden Sie hier eine kurze Zusammenfassung, wie sich mein Denkprozess unterscheidet, wenn ich in beiden Bibliotheken an demselben Steuerelement arbeite.
In jQuery mache ich mir Sorgen um:
- Benutze ich den richtigen Selektor, um die
li
gewünschte Elementgruppe zu erfassen ?
- Muss ich diese Werteliste neu füllen, wenn dieser Ajax-Aufruf abgeschlossen ist?
- Wie kann ich diese Array-Werte wieder in die
input
Elemente auf der Seite einfügen?
In Backbone konzentriere ich mich mehr auf:
- Was ist die richtige Logik, um diesen Satz von Eigenschaften für mein Modellelement zu validieren?
- Wenn der Benutzer auf die Schaltfläche Hinzufügen klickt, sollte ich der Sammlung sofort ein neues Element hinzufügen oder warten, bis alle Daten eingegeben wurden und es "gültig" ist?
- Wie soll ein Artikel in meiner Sammlung reagieren, wenn der Artikel unmittelbar vor oder nach dem Löschen erscheint?
jQuery kümmert sich um die kleinsten Details, und Backbone ist auf einem höheren Niveau.
Beachten Sie abschließend, dass ich bei der Erörterung der Beispiele für Backbone.j die Wörter "control" und "app" verwendet habe. Es ist nicht wahr, dass Backbone.js nur für Apps mit nur einer Seite gedacht ist. Es ist jedoch wahr, dass Backbone.js gut zum Erstellen komplexer Anwendungen geeignet ist, die Daten manipulieren und viel Logik verarbeiten. Es wäre albern, es für kleine UI-Elemente zu verwenden - die zusätzliche Struktur, die es auferlegt, wird nicht benötigt.
Update: Bei mehreren Seiten bietet Backbone einen leistungsstarken Mechanismus zum Speichern Ihrer Daten. Jedes Modell verfügt über eine save
Methode, die einen AJAX-Aufruf ausführt, um die Änderungen auf dem Server zu speichern. Solange Sie Ihre Daten unterwegs speichern, können Sie eine mehrseitige App verwenden. Es ist ein sehr flexibles Modell, und so werden wir wahrscheinlich Backbone bei der Arbeit einsetzen. Ich würde gerne eine einseitige App erstellen, aber wir haben 10 Jahre Arbeit in unserer bestehenden mehrseitigen Anwendung. Wir möchten einige unserer intensiveren UI-Komponenten in Backbone neu erstellen und dann die Änderungen mit dem Server synchronisieren, bevor der Benutzer zu einer anderen Seite wechselt.