Mit Backbone.JS haben wir es mit einem kleinen aber feinen JavaScript MVC Framework zu tun, welches besonders empfehlenswert für komplexe, aufwändige und interaktive Apps konzipiert ist und deren Erstellung erheblich erleichtert. Es stellt in seinem Grundprinzip einen sauberen Weg dar grundlegende Daten von der visuellen Erscheinung klar zu trennen.
Das Framework wurde von Jeremy Ashkenas mit der Intention geschaffen, eine kleine Framework-Bibliothek mit großem Nutzen zu kreieren und zusätzlich noch Unterstützung bei der Integrierung anderer Frameworks zu bieten. Backbone stellt sich als eine Sammlung kohesiver Objekte dar, die alle unter 4kb groß sind. Die Intention von Backbone ist es komplexen JavaScript Applikationen eine Struktur zu geben, daher auch der Name (Backbone = Wirbelsäule).
Aufbau des Frameworks – Die 4 Grundkonzepte des Frameworks
Das Frameworks Backbone.JS fußt auf 4 Grundkonzepte (ehemals nur 3), die das modernen MVC-Modell ausmachen (Model-View-Controller). Anfangs bestand das Framework lediglich aus Models, Views und Collections, Controller kamen erst später hinzu. Für die Kommunikation mit dem Server benötigt das Framework darüber hinaus eine RESTful API. Um Entwicklern das Arbeiten mit Backbone zu erleichtern, wurde außerdem häufig auf bestehende Plugins wie der ajax-Komponente von jQuery zurückgegriffen.
Fangen wir bei den Modellen an. Modelle sind abstrakte Objekte, die verschiedene Interpretationen von Festlegungen erlauben. Ein Modell repräsentiert dabei eine einzige Einheit im Speicher. Modelle beinhalten die Steuerung interaktiver Daten und ihrer Logik, Validation sowie Eigenschaften und Zugangskontrollen von Objekten. Ein Modell bestimmt demnach wie und warum ein Objekt geladen und gespeichert wird. Hierfür haben Modelle verschiedene in Backbone integrierte Methoden wie initialize() oder extend().
Kollektionen wiederum fassen Modelle in Backbone zu einer Gruppe zusammen. Kollektionen also sind nichts weiter als das Resultat von Abfragen, das aus einer Vielzahl von Einträgen (Modellen) besteht. Es muss vorher definiert sein, welchem Modell die Kollektion zugehörig ist.

Views stehen für Präsention in Backbone.JS und können anfangs zu einigen Verwirrungen bei der Erklärung führen. Grundlegend kontrolliert eine Präsentation folgende zwei Aspekte: Reaktion auf Events, die vom DOM (HTML Schnittstelle) und die Modelle/Kollektionen und auf der anderen Seite repräsentieren Views den Status der App und das Datenmodell zur Einsicht des Nutzers, es rendert die App. Views können neben dem visuellen Aspekt auch dafür verwendet werden zu registrieren, wann und warum sich ein Modell ändert (Beispiel: Namensänderung).
Controller in Backbone sind ein weiteres bekanntes Konzept für Entwickler, die mit dem MVC-Modell bereits vertraut sind. Controller verarbeiten die ankommenden Daten einer HTTP-Anfrage (Request) und reagieren darauf entsprechend mit dem Initiieren eines neuen Views.
Klientel und Anwendung
Für alle Entwickler, die sich bereits mit dem MVC-Modell vertraut gemacht haben, dürfte Backbone.JS eine leicht zu verstehende Angelegenheit sein. Backbone wurde als “Leichtgewicht-Framework” konzipiert und erlaubt das Einbinden weiterer Frameworks und Plugins.
Fest steht: selbst für simple bis auch komplexe Apps reichen jQuery or MooTools kaum noch aus oder gestalten sich im Entwicklungsprozess als umständlich. Normale JavaScript Bibliotheken würden jedoch dazu führen, dass man irgendwann den Überblick verliert. Hier kommt Backbone zum Einsatz, das trotz seiner geringen Größe extremes Potential aufweist und für eine Vielzahl an Entwicklern eine Erleichterung darstellt.

Vor- und Nachteile des Frameworks
Absoluter Bonuspunkt geht an das Framework für seine geringe Größe. Die komplette Bibliothek mit Quellcode und Dokumentation ist gerade einmal 50 kb groß. Die Community ist entsprechend aktiv und es gibt eine Unmenge an Tutorials, Foren und Hilfen zum Framework. Backbone.JS macht seinem Namen alle Ehre und steht neben Vielseitigkeit vor allem für Zuverlässigkeit und Stabilität wie auch die Möglichkeit zur Kombination mit anderen Frameworks und Plugins.
Der einzig geringe Nachteil ergibt sich womöglich in die Einarbeitung der MVC-Struktur, die für Neulinge, die vorher noch nicht mit MVC-Modellen zu tun hatten, etwas abstrakt erscheinen mag. Backbone erlaubt des Weiteren nicht die Registrierung von Änderung, die vom Server an den Client geschickt werden. Diesen Nachteil kann jedoch mit Long-Polling entgegengewirkt werden, der Client wird gezwungen eine dauerhafte Verbindung zum Server aufrechtzuhalten.
Ausblick und Fazit
Es wäre wohl tatsächlich nicht zu hoch gegriffen zu behaupten, dass Backbone die Art und Weise verändert, wie Apps in Zukunft erstellt werden. Kommende Frameworks werden sich an der Arbeitsweise von Backbone.JS sicherlich stark anlehnen. Trotz seiner sehr geringen Größe schafft es Backbone sich als sehr solides und zukunftsweisendes Framework zu präsentieren, dass Ordnung im wiederkehrenden JavaScript Chaos schafft.


