Model View Controller mit Backbone.js

Seite 5: Fazit

Inhaltsverzeichnis

Backbone.js hat unbestritten zahlreiche Stärken: Gerade im Vergleich zu Knockout fällt auf, dass Backbone.js nicht nur einen Teilaspekt bei der Entwicklung von Single-Page-Anwendungen adressiert, sondern einen umfassenden Ansatz bietet. Kombiniert mit der klar gegliederten Struktur, die Backbone.js-Anwendungen üblicherweise aufweisen, trägt das viel zur Wartbarkeit von großen Webanwendungen bei.

Der Fokus auf die Modellierung der Domäne und die automatische Synchronisierung mit dem Webserver zwingen den Entwickler, von vornherein eine gewisse Struktur für die Anwendung zu planen und sich Gedanken über den fachlichen Kern zu machen. Dies erklärt, warum mit Backbone.js entwickelte Webanwendungen in der Regel sehr sauber strukturiert sind.

Diese Stärke ist zugleich aber auch eine der relevanten Schwächen von Backbone.js: Da für jede Anwendung zunächst die entsprechende Struktur aufzubauen ist, entsteht insbesondere für kleine Projekte rasch viel Code, der zunächst nichts zu der eigentlichen Anwendung beiträgt, sondern lediglich Infrastrukturcode darstellt. Die Entwicklung ist gerade zu Beginn entsprechend aufwendig und zäh.

Die größte Schwäche von Backbone.js liegt jedoch in dem Verzicht auf ein Konzept zur Aktualisierung der Darstellung. Dadurch entstehen Backbone.js gleich zwei Nachteile. Zum einen ist man wiederum auf die Integration einer Bibliothek eines Drittanbieters angewiesen, was langfristig stets auch zu Kompatibilitäts- und Wartungsproblemen führen kann. Außerdem gibt man die saubere Struktur einer Backbone.js-Anwendung zumindest teilweise zu Gunsten von Code auf, der mit einer anderen Bibliothek entwickelt wurde. Das kann sich insbesondere bei der Verwendung von jQuery schnell rächen.

Zum anderen übernimmt Backbone.js von sich aus keinerlei Verwaltung der dargestellten Ansichten. Das bedeutet, dass man als Entwickler selbst Sorge für deren korrekte Entsorgung tragen muss. All zu rasch entstehen hierbei jedoch nur schwer auffindbare Speicherlecks, die der Stabilität und Leistung der Anwendung langfristig schaden.

Backbone.js begegnet diesen Problemen nicht. Abhilfe schaffen Erweiterungen wie Backbone.Marionette oder Thorax, die allerdings jeweils wiederum alles andere als kompakt sind und die ohnehin schon vorhandene Komplexität der Anwendung weiter erhöhen.

Das Ergebnis sind dann häufig Anwendungen, die zwar sauber strukturiert sind, für wenig Effekt allerdings eine komplexe Infrastruktur und verhältnismäßig viel Code aufweisen.

Alles in allem kann man festhalten, dass Backbone.js ein prinzipiell zwar durchdachtes Framework ist, das allerdings rasch zu unnötig hoher Komplexität führt. Insbesondere der Verzicht auf ein eigenes Konzept zur Verwaltung der Darstellung trägt hierzu bei, unter anderem aufgrund der Speicherverwaltung für einzelne Ansichten, die man von Hand implementieren muss.

Mehr Infos

MVC- und MVVM-Framework für JavaScript im Vergleich

Der vorliegende Artikel ist der zweite Teil einer Serie, in der verschiedene mit JavaScript arbeitende MV*-Frameworks vorgestellt werden. In der nächsten Folge wird das aus dem vergangenen Teil bereits bekannte MVVM-Entwurfsmuster nochmals aufgegriffen, dann allerdings nicht in Verbindung mit Knockout.js, sondern einem zwar noch sehr jungen, aber ausgesprochen vielversprechenden Framework: AngularJS.

Bewertet man Backbone.js im Hinblick auf die Tatsache, dass es bereits im Jahr 2010 die Möglichkeit eröffnet hat, Single-Page-Anwendungen wohlstrukturiert und professionell zu entwickeln, handelt es sich trotz allem um ein durchaus beachtungswürdiges Framework. Betrachtet man es jedoch aus heutiger Sicht, fallen die Komplexität und der erforderliche Aufwand ausgesprochen negativ auf. Vergleicht man Backbone.js zudem mit Knockout.js, so macht sich das fehlende Konzept zur Verwaltung der Darstellung schmerzlich bemerkbar. Backbone.js wirkt dadurch nicht mehr zeitgemäß.

Prinzipiell wäre Knockout daher die perfekte Ergänzung zu Backbone.js, was unter anderem zu dem Projekt Knockback geführt hat. Auch dieser Ansatz birgt allerdings Gefahren, hängt man dann doch gleich von zwei großen Frameworks, deren Kompatibilität zueinander und einer weiteren, dritten Komponente ab, die beide verbindet.

Zweifelsohne eignet sich Backbone.js für komplexe Webanwendungen eher als Knockout, dennoch kann man es auf Grund der genannten Schwächen nur bedingt empfehlen.

Golo Roden
ist Gründer und Geschäftsführer der "the native web UG", eines auf native Webtechniken spezialisierten Unternehmens. Für die Entwicklung moderner Webanwendungen bevorzugt er JavaScript und Node.js und hat mit "Node.js & Co." das erste deutschsprachige Buch zum Thema geschrieben.
(jul)