Backbone.js
Backbone.js
| |
---|---|
![]() | |
Basisdaten
| |
Entwickler | Jeremy Ashkenas |
Erscheinungsjahr | 13. Oktober 2010[1] |
Aktuelle Version | 1.1.2[1] (20. Februar 2014) |
Betriebssystem | plattformunabhängig |
Programmiersprache | 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]
- Airbnb
- BitTorrent.com
- Diaspora
- DocumentCloud
- Foursquare
- Grooveshark
- Groupon Now
- Hulu
- LinkedIn Mobile
- NewsBlur[4]
- Pandora
- Seafile
- Sony Entertainment Network
- SoundCloud
- Trello
- USA Today
- WordPress.com
Siehe auch
- Javascript MVC Frameworks
Literatur
- Addy Osmani: Developing Backbone.js Applications. 1st Auflage. O'Reilly Media, 2013, ISBN 978-1-4493-2825-2, S. 150 (oreilly.com).
Weblinks
Referenzen
- ↑ a b Change Log
- ↑ 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]).
- ↑ Websites made with Backbone.js
- ↑ Backbonification: migrating a large JavaScript project from DOM spaghetti to Backbone.js, Samuel Clay (NewsBlur) 13th November 2012