Model View ViewModel mit Knockout.js

Stärken, Schwächen, Fazit

Verwalten von Routen und Ansichten

Ähnlich dürftig verhält sich Knockout, wenn eine Webanwendung verschiedene Ansichten enthält, zwischen denen der Anwender hin- und herwechseln kann, idealerweise mit Unterstützung der Zurück-Schaltfläche des Webbrowsers.

Hierfür verwenden Single-Page-Anwendungen üblicherweise HashBang-basierte URLs oder die History-API von HTML5. Beides unterstützt Knockout jedoch nicht, sodass man zu diesem Zweck auf den Einsatz zusätzlicher Bibliotheken wie Sammy.js angewiesen ist.

Auch das dynamische Nachladen und Wechseln von Ansichten ist Knockout fremd: Hier ist man komplett auf sich allein gestellt, die jeweiligen Fragmente sind von Hand nachzuladen und entsprechend zu verdrahten. Abhilfe schaffen wiederum zusätzliche Bibliotheken von Drittanbietern, wie pager.js.

Insgesamt zeigt sich an dieser Stelle klar die eingangs erwähnte Ausrichtung von Knockout: Die einzige Aufgabe besteht darin, das MVVM-Entwurfsmuster für HTML zu implementieren und das Konzept der Datenbindung zwischen HTML und JavaScript zu ermöglichen.

Diese Herausforderung meistert Knockout mit Bravour, es eignet sich für Single-Page-Anwendungen ohne den Einsatz zusätzlicher Werkzeuge allerdings nur bedingt.

Stärken und Schwächen

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

Der vorliegende Artikel ist der erste Teil einer Serie, in der verschiedene JavaScript-MV*-Frameworks vorgestellt werden. Die nächste Folge wird sich mit einem der "Klassiker" beschäftigen: Backbone.js ist das mit Abstand am weitesten verbreitete MVC-Framework für die Entwicklung von Single-Page-Anwendungen.

Die steife Fokussierung von Knockout auf reines MVVM kann man durchaus als Stärke ansehen: Unter anderem verfügt es dadurch über eine ausgesprochen steile Lernkurve, die es Einsteigern vergleichsweise schnell ermöglicht, ansprechende Ergebnisse zu erzielen.

Zugleich lässt es sich aber auch als Schwäche auffassen, schließlich besteht kaum eine moderne Webanwendung heutzutage aus lediglich einer einzigen Ansicht. Der Einsatz von MVVM ohne das gleichzeitige Verwenden von Routen und dem Wechsel zwischen verschiedenen Ansichten kommt in der Praxis kaum vor.

Hierfür stets auf eine zweite – und für die Kommunikation mit dem Webserver gar eine dritte – Bibliothek zurückgreifen zu müssen, erschwert die Entwicklungsarbeit unnötig und erhöht die Gefahr von Kompatibilitätsproblemen und anderen Brüchen. Insofern bietet Knockout zwar einen raschen Einstieg, limitiert den Entwickler allerdings ebenso rasch.

Ein interessanter Aspekt der Bibliothek ist, dass sie außer den modernen, gängigen Webbrowsern auch ältere Versionen, insbesondere des Internet Explorer, unterstützt: So kann man Knockout beispielsweise in Verbindung mit dem Internet Explorer 6.0 und Firefox 2.0 problemlos verwenden.

Bei diesen Browsern empfiehlt es sich dann allerdings, als zusätzliche Bibliothek zumindest JSON3 zu verwenden, um das korrekte Serialisieren und Deserialisieren von JSON-Objekten zu gewährleisten.

Fazit

Knockout ist ein solides MVVM-Framework, stellt allerdings außer der Datenbindung keine weiteren Funktionen für die Entwicklung von Single-Page-Anwendungen zur Verfügung. Dadurch gelingt der Einstieg zwar ausgesprochen zügig, ebenso rasch stößt man aber auch an die Grenzen der Bibliothek.

Für die Anbindung von Webdiensten und das Verwalten von Routen und Ansichten ist Knockout auf Bibliotheken von Drittanbietern wie beispielsweise jQuery und pager.js angewiesen. Der Nachteil hierbei liegt in den zusätzlichen Abhängigkeiten, die man eingeht, und die sich unter anderem im Hinblick auf die langfristige Kompatibilität negativ auswirken könnten. Zudem steigt der Wartungsaufwand.

Dennoch ist Knockout durchaus einen Blick wert – dann nämlich, wenn eine Anwendung nur aus wenigen Ansichten besteht und Funktionen zu deren Routing und Verwaltung nicht benötigt werden. (jul)

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.