Entgegen der landläufigen Meinung ist Ember.js kein "schwererer Ansatz" für Backbone.js. Es handelt sich um verschiedene Arten von Werkzeugen, die auf völlig unterschiedliche Endprodukte abzielen. Embers Sweet Spot sind Anwendungen, bei denen der Benutzer die Anwendung für lange Zeiträume, möglicherweise den ganzen Tag, offen hält und Interaktionen mit den Ansichten der Anwendung oder den zugrunde liegenden Daten tiefgreifende Änderungen in der Ansichtshierarchie auslösen. Ember ist größer als Backbone, aber dank Expires
ist Cache-Control
dies nur bei der ersten Ladung von Bedeutung. Nach zwei Tagen täglicher Nutzung werden diese zusätzlichen 30.000 durch Datenübertragungen überschattet, früher, wenn Ihre Inhalte Bilder enthalten.
Das Backbone ist ideal für Anwendungen mit einer kleinen Anzahl von Zuständen, bei denen die Ansichtshierarchie relativ flach bleibt und der Benutzer dazu neigt, selten oder für kürzere Zeiträume auf die App zuzugreifen. Der Code von Backbone bleibt kurz und bündig, da davon ausgegangen wird, dass die Daten, die das DOM sichern, weggeworfen werden und beide Elemente im Speicher gesammelt werden: https://github.com/documentcloud/backbone/issues/231#issuecomment-4452400 Die kleinere Größe des Backbones eignet sich auch besser für kurze Interaktionen.
Die Apps, die in beiden Frameworks geschrieben werden, spiegeln diese Verwendungszwecke wider: Zu den Apps von Ember.j gehören das Web-Dashboard von Square , Zendesk (zumindest die Agenten- / Ticketing-Oberfläche) und der Scheduler von Groupon : Alle Anwendungen, in denen ein Benutzer möglicherweise den ganzen Tag arbeitet.
Backbone-Apps konzentrieren sich eher auf kurze oder gelegentliche Interaktionen, die oft nur kleine Abschnitte einer größeren statischen Seite sind: Airbnb , Khan Academy , Foursquares Karte und Listen .
Sie können Backbone verwenden, um die Arten von Anwendungen zu erstellen, auf die Ember abzielt (z. B. Rdio ), indem Sie a) die Menge des Anwendungscodes erhöhen, für den Sie verantwortlich sind, um Probleme wie Speicherlecks oder Zombie-Ereignisse zu vermeiden (ich persönlich empfehle diesen Ansatz nicht). oder b) durch Hinzufügen von Bibliotheken von Drittanbietern wie backbone.marionette oder Coccyx - es gibt viele dieser Bibliotheken, die alle versuchen, ähnliche überlappende Funktionen bereitzustellen, und Sie werden wahrscheinlich Ihr eigenes benutzerdefiniertes Framework zusammenstellen, das größer ist und mehr Klebercode erfordert als wenn du nur Ember benutzt hättest.
Letztendlich hat die Frage "was zu verwenden ist" zwei Antworten.
Erstens: "Was sollte ich im Allgemeinen in meiner Karriere verwenden?": Beides, genau wie Sie am Ende alle Tools erlernen werden, die für die Arbeit spezifisch sind, die Sie in Zukunft ausführen möchten. Sie würden nie "Backbone oder D3?" Fragen; "Backbone or Ember" ist eine ebenso dumme Frage.
Zweitens: "Was soll ich speziell für mein nächstes Projekt verwenden?": Hängt vom Projekt ab. Beide kommunizieren gleichermaßen problemlos mit einem Rails-Server. Wenn Ihr nächstes Projekt eine Mischung aus vom Server generierten Seiten mit sogenannten "Inseln des Reichtums" umfasst, die von JavaScript bereitgestellt werden, verwenden Sie Backbone. Wenn Ihr nächstes Projekt die gesamte Interaktion in die Browserumgebung überträgt, verwenden Sie Ember.