wake-up-neo.com

Ember.js oder Backbone.js für das Restful-Backend

Ich weiß bereits, dass ember.js im Gegensatz zu backbone.js ein schwererer Ansatz ist. Ich habe viele Artikel über beide gelesen.

Ich frage mich, welches Framework als Frontend für ein Rails Rest-Backend einfacher ist. Für backbone.js sah ich verschiedene Ansätze, um ein Rest-Backend zu nennen. Für ember = es scheint, dass ich noch einige Bibliotheken wie 'Daten' oder 'Ressourcen' hinzufügen muss. Warum gibt es zwei Bibliotheken dafür?

Was ist die bessere Wahl? Es gibt nicht viele Beispiele, um das Frontend mit dem Backend zu verbinden. Was ist ein gutes Beispiel für eine Backend-Pause, rufen Sie dazu auf:

URI: ../restapi/topics GET-Berechtigungsnachweise: admin/secrect format: json

98
Robin Wieruch

Entgegen der weitverbreiteten Meinung ist Ember.js für Backbone.js kein "schwergewichtigerer Ansatz". Es sind verschiedene Arten von Werkzeugen, die auf völlig unterschiedliche Endprodukte abzielen. Embers Sweet Spot sind Anwendungen, bei denen der Benutzer die Anwendung für längere Zeit offen hält, möglicherweise den ganzen Tag, 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, Cache-Control das ist nur beim ersten laden wichtig. Nach zwei Tagen täglicher Nutzung werden diese zusätzlichen 30.000 durch Datenübertragungen überschattet, eher, wenn Ihre Inhalte Bilder enthalten.

Backbone ist ideal für Anwendungen mit einer geringen Anzahl von Zuständen, in denen die Ansichtshierarchie relativ flach bleibt und der Benutzer eher selten oder für kürzere Zeiträume auf die App zugreift. Der Code von Backbone bleibt kurz und bündig, da davon ausgegangen wird, dass die Daten, die das DOM sichern, gelöscht werden und beide Elemente im Speicher abgelegt werden: https://github.com/documentcloud/backbone/issues/231 # issuecomment-44524 Die kleinere Größe des Backbones macht es auch besser für kurze Interaktionen geeignet.

Die Apps, die in beiden Frameworks geschrieben werden, spiegeln die folgenden Verwendungszwecke wider: Ember.js Apps umfassen Square's Web-Dashboard , Zendesk (zumindest die Agenten-/Ticketing-Oberfläche) und Groupon Scheduler : 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 , Foursquare's Karte und Listen .

Sie können Backbone verwenden, um die Arten von Anwendungen zu erstellen, die Ember) zum Ziel haben (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 empfehle diesen Ansatz nicht persönlich) oder b) indem Sie Bibliotheken von Drittanbietern wie backbone.marionette) hinzufügen oder Coccyx - Es gibt viele dieser Bibliotheken, die versuchen, ähnliche überlappende Funktionen bereitzustellen, und Sie werden wahrscheinlich Ihr eigenes benutzerdefiniertes Framework zusammenstellen, das größer ist und mehr Klebercode erfordert als Sie habe gerade Ember benutzt.

Letztendlich gibt es zwei Antworten auf die Frage, "was zu verwenden ist".

Erstens: "Was sollte ich generell in meiner Karriere verwenden?" Beides, genau wie Sie lernen werden, welche Tools speziell für die Arbeit sind, die Sie in Zukunft ausführen möchten. Du würdest niemals "Backbone oder D3?" "Backbone or Ember" ist eine ebenso dumme Frage.

Zweitens: "Was soll ich konkret 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 "Islands of Richness" umfasst, die von JavaScript bereitgestellt werden, verwenden Sie Backbone Das nächste Projekt schiebt die gesamte Interaktion in die Browser-Umgebung, benutze Ember.

257
Trek Glowacki

Um eine kurze, vereinfachte Antwort zu geben: Für ein RESTful-Backend sollten Sie derzeit Backbone verwenden.

Um eine komplexere Antwort zu geben: Es kommt wirklich darauf an, was Sie tun. Wie andere gesagt haben, ist Ember für verschiedene Dinge konzipiert und wird eine andere Gruppe von Menschen ansprechen. Meine kurze Antwort basiert auf Ihrer Aufnahme der RESTful-Anforderung.

Momentan sind Ember-Daten (die der Standard-Persistenzmechanismus in Ember zu sein scheinen) noch lange nicht produktionsbereit. Dies bedeutet, dass es einige Fehler aufweist und keine verschachtelten URIs unterstützt (z. B./posts/2/comments/4556). Wenn REST Ihre Anforderung ist, müssen Sie dies vorerst umgehen, wenn Sie Ember auswählen (dh Sie müssen es entweder einhacken, warten, implementieren) so etwas wie Ember-Data selbst von Grund auf neu erstellen oder nicht sehr restvolle URIs verwenden). Ember-Data ist kein fester Bestandteil von Ember, daher ist dies durchaus möglich.

Die Hauptunterschiede zwischen den beiden sind, abgesehen von der Größe, im Wesentlichen:

Ember versucht, so viel wie möglich für Sie zu tun, damit Sie nicht so viel Code schreiben müssen. Es ist sehr hierarchisch und, wenn Ihre App auch sehr hierarchisch ist, wird es wahrscheinlich gut passen. Weil es so viel für Sie tut, kann es schwierig sein, herauszufinden, wo Fehler herkommen und warum unerwartetes Verhalten auftritt (es gibt viel "Magie"). Wenn Sie eine App haben, die auf natürliche Weise in den App-Typ passt, von dem Ember erwartet, dass Sie sie erstellen, ist dies wahrscheinlich kein Problem.

Backbone versucht, so wenig wie möglich für Sie zu tun, damit Sie über die aktuellen Entwicklungen nachdenken und eine Architektur erstellen können, die zu Ihrer App passt (anstatt eine App zu erstellen, die zur Architektur des verwendeten Frameworks passt). Es ist viel einfacher, damit anzufangen, aber wenn Sie nicht vorsichtig sind, können Sie sehr schnell in Unordnung geraten. Es erledigt keine Dinge wie berechnete Eigenschaften, Ereignisse zum automatischen Aufheben der Bindung usw. und überlässt sie Ihnen, sodass Sie eine Menge Dinge selbst implementieren müssen (oder zumindest Bibliotheken auswählen müssen, die das für Sie tun), obwohl dies der Fall ist eher der springende Punkt.

pdate: Es scheint, dass Ember seit kurzem verschachtelte URIs unterstützt. Ich nehme an, die Frage hängt davon ab, wie viel Magie Sie mögen und ob Ember passt architektonisch gut zu Ihrer App.

26
bengillies

Ich denke, dass Ihre Frage bald blockiert wird :) Es gibt ein paar Streitigkeiten zwischen den beiden Frameworks.

Grundsätzlich macht Backbone nicht viel, und deshalb liebe ich es: Sie müssen viel programmieren, aber Sie werden am richtigen Ort programmieren. Ember macht eine Menge Dinge, also solltest du besser aufpassen, was es tut.

Serverdiskussionen sind eines der wenigen Dinge, die Backbone macht, und es macht einen großartigen Job damit. Also würde ich mit Backbone beginnen und dann versuchen, Ember zu versuchen, wenn Sie nicht völlig zufrieden sind.

Sie können auch diesen Podcast anhören, wo Jeremy Ashkenas, der Schöpfer von Backbone, und Yehuda Katz, Mitglied von Ember, eine nette Diskussion führen

3
Nicolas Zozol