Zum Inhalt springen

Backbone.js

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. August 2015 um 21:56 Uhr durch Pc86 (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Backbone.js

Basisdaten

Entwickler Jeremy Ashkenas
Erscheinungsjahr 13. Oktober 2010[1]
Aktuelle Version 1.1.2[1]
(20. Februar 2014)
Betriebssystem plattformunabhängig
Programmier­sprache JavaScript
Kategorie JavaScript-Bibliothek
Lizenz MIT-Lizenz (Freie Software)
deutschsprachig nein
backbonejs.org

Backbone.js ist eine JavaScript-Bibliothek mit RESTful-JSON-Schnittstelle. Backbone basiert auf dem Model-View-Controller-Muster (MVC). Backbone ist für seine geringe Größe bekannt und nur von der JavaScript-Bibliothek [2] Underscore.js abhängig. Backbone wird zur Programmierung von Single-page-Webanwendungen und zur Synchronität von Webanwendungen (z. B. verschiedene Clients und Server) verwendet. Backbone wurde von Jeremy Ashkenas geschaffen, der ebenso für CoffeeScript verantwortlich ist.

Architekturvorgaben

Eine Backbone-Anwendung besteht aus den Elementen Model, Collection, View und Router. Das Interaktionsmuster von Backbone kann dem MVC-Muster zugeordnet werden. Model und View werden gemäß dem MVC-Muster umgesetzt. Allerdings fehlen konkrete Controller-Instanzen bei der Umsetzung. Dies hat folgende Gründe:

  • Der Router übernimmt die Aufgaben eines „Front Controllers“. Ein solcher Controller dient als Ereignissenke und Einstiegspunkt für alle eingehenden Anfragen an eine Webseite. Der Front Controller adressiert bei Backbone unmittelbar die jeweils verantwortliche View.
  • Die View einer Backbone-SPA übernimmt neben der Darstellung ebenfalls die Aufgabe der Ereignisbehandlung. Bei einem traditionellen MVC-Muster werden alle Aktionen im Rahmen der View zum jeweils verantwortlichen Controller weitergeleitet. Auf diese View/Controller-Separation wird bei Backbone-Anwendungen verzichtet. Der klassische Grund für die View/Controller-Separation liegt darin, dass die jeweiligen Verhaltensstrategien über verschiedene Controller ausgetauscht werden können. Ein Beispiel hierfür kann ein editierbares und nicht editierbares Verhalten sein. Durch den Verzicht auf explizite Controller-Instanzen wird der Implementierungsaufwand reduziert.

Bewertung

Backbone.js ist leichtgewichtig, schnell und besitzt einen geringen Speicherbedarf. Die Lernkurve verläuft tendenziell linear ab. Die Grundkonzepte von Model, Collection, Router und View können schnell erlernt werden. Zudem sind die Funktionalitäten von Backbone nicht auf Konventionen aufgebaut, sodass das Framework nicht als Blackbox den nötigen Gluecode einer Javascript-lastigen Webanwendung verwaltet.

Da die Anwendungsarchitektur einer Backbone-Anwendung vorgegeben ist, können sich Anwendungsentwickler mit Vorkenntnissen leicht einarbeiten. Allerdings erlaubt Backbone einen sehr flexiblen Umgang bei der Umsetzung der View-Komponente. Fokussiert werden sollte eine Aufteilung in verschiedene partielle Views, jedoch macht Backbone an dieser Stelle keine Vorschriften und legt somit keine klare Vorgehensweise fest. Dies kann zur Folge haben, dass mehr Programmcode zur DOM-Manipulation entwickelt werden muss.

Backbone besitzt keinen Mechanismus zur Datenbindung nach dem MVVM-Muster. Hierdurch muss grundsätzlich mehr Programmcode zur Synchronisierung zwischen View und Model entwickelt werden. Das Projekt Knockback.js versucht, eine Kombination von Backbone und KnockoutJS zu schaffen, um dieses Problem zu lösen. Gleichwohl wirkt sich eine Datenbindung abschwächend auf die Performance des Webclients aus.

Vorkommen

Folgende Webanwendungen wurden mit Backbone.js erstellt:[3]

Siehe auch

Javascript MVC Frameworks

Literatur

Referenzen

  1. a b Change Log
  2. Alex MacCaw: JavaScript Web Applications. O'Reilly Media, Inc., 2011, ISBN 978-1-4493-0351-8, S. 165 (google.com [abgerufen am 27. April 2012]).
  3. Websites made with Backbone.js
  4. Backbonification: migrating a large JavaScript project from DOM spaghetti to Backbone.js, Samuel Clay (NewsBlur) 13th November 2012