Wiem już, że ember.js jest bardziej ciężkim podejściem w przeciwieństwie do backbone.js. Czytałem wiele artykułów o obu.
Zadaję sobie pytanie, który framework działa łatwiej jako frontend dla backendu Railsów. W przypadku backbone.js widziałem różne podejścia do wywoływania zaplecza resztowego. W przypadku żaru wydaje się, że muszę uwzględnić więcej bibliotek, takich jak „dane” lub „zasoby”. Dlaczego są do tego dwie biblioteki?
Więc jaki jest lepszy wybór? Nie ma też wielu przykładów łączenia frontendu z backendem. Jaki jest dobry przykład roboczy dla wywołania reszty zaplecza:
URI: ../restapi/topics POBIERZ poświadczenia uwierzytelniania: admin / secrect format: json
ruby-on-rails
rest
backbone.js
ember.js
frontend
Robin Wieruch
źródło
źródło
Odpowiedzi:
Wbrew popularnej opinii Ember.js nie jest „bardziej ciężkim podejściem” do Backbone.js. Są to różnego rodzaju narzędzia, których celem są zupełnie inne produkty końcowe. Najlepszym miejscem dla Ember są aplikacje, w których użytkownik utrzymuje aplikację otwartą przez długi czas, być może przez cały dzień, a interakcje z widokami aplikacji lub danymi bazowymi powodują głębokie zmiany w hierarchii widoków. Ember jest większa niż kręgosłup, ale dzięki
Expires
,Cache-Control
to liczy się tylko na pierwszym obciążeniu. Po dwóch dniach codziennego użytkowania te dodatkowe 30 tys. Zostanie przyćmione przez transfery danych, wcześniej, jeśli Twoje treści obejmują obrazy.Sieć szkieletowa jest idealna do zastosowań z niewielką liczbą stanów, w których hierarchia widoków pozostaje stosunkowo płaska i gdzie użytkownik ma tendencję do rzadkiego uzyskiwania dostępu do aplikacji lub przez krótsze okresy. Kod Backbone pozostaje krótki i słodki, ponieważ zakłada, że dane stanowiące kopię zapasową DOM zostaną wyrzucone, a oba elementy zostaną zebrane w pamięci: https://github.com/documentcloud/backbone/issues/231#issuecomment-4452400 Mniejszy rozmiar Backbone sprawia, że lepiej nadaje się do krótkich interakcji.
Aplikacje, które ludzie piszą w obu frameworkach, odzwierciedlają te zastosowania: aplikacje Ember.js obejmują pulpit nawigacyjny Square , Zendesk (przynajmniej interfejs agenta / biletowania) i harmonogram Groupon : wszystkie aplikacje, w których użytkownik może pracować przez cały dzień.
Aplikacje Backbone koncentrują się bardziej na krótkich lub nieformalnych interakcjach, które często są tylko małymi sekcjami większej statycznej strony: airbnb , Khan Academy , mapa i listy Foursquare .
Państwo może używać Backbone aby rodzaje aplikacji, które cele Ember (np Rdio ) poprzez: a) zwiększenie ilości kodu aplikacji jesteś odpowiedzialny za problemy Unikaj jak wycieki pamięci lub zdarzeń zombie (Osobiście nie polecam tej metody) lub b) dodając biblioteki zewnętrzne, takie jak backbone.marionette lub Coccyx - jest wiele z tych bibliotek, które wszystkie starają się zapewnić podobną nakładającą się funkcjonalność i prawdopodobnie skończysz na złożeniu własnej niestandardowej struktury, która jest większa i wymaga więcej kodu kleju niż gdybyś właśnie używał Ember.
Ostatecznie pytanie, „którego użyć”, ma dwie odpowiedzi.
Po pierwsze, „Z których ogólnie powinienem korzystać w swojej karierze”: Oba, tak jak w końcu nauczysz się wszelkich narzędzi specyficznych dla pracy, którą będziesz chciał wykonywać w przyszłości. Nigdy nie zapytałeś „Backbone czy D3?”; „Backbone or Ember” to równie głupie pytanie.
Po drugie, „Którego należy użyć w szczególności w moim następnym projekcie”: Zależy od projektu. Oba będą komunikować się z serwerem Rails z równą łatwością. Jeśli Twój następny projekt obejmuje połączenie stron generowanych przez serwer z tak zwanymi „wyspami bogactwa” zapewnianymi przez JavaScript, użyj Backbone. Jeśli twój następny projekt wypycha całą interakcję do środowiska przeglądarki, użyj Ember.
źródło
Expires
iCache-Control
pomóc o wiele mniej, niż myślą ludzie - zwłaszcza w odniesieniu do urządzeń mobilnych, które często je ignorują. Pamiętam, że wersja iOS całkowicie je zignorowała (ale nadal słucha manifestu pamięci podręcznej HTML5). Ponadto te wartości nagłówka nie pomogą podczas pierwszej wizyty użytkownika - co zazwyczaj jest najbardziej krytyczne przy podejmowaniu decyzji, czy użytkownik pozostanie i będzie korzystał z Twojej aplikacji. Mówienie o tej różnicy między plikami o wielkości 30 kb nie wydaje mi się aż tak wielkim problemem. Czy to różnica w postaci surowej czy zminimalizowanej i spakowanej 30k?Aby dać krótką, uproszczoną odpowiedź: w przypadku zaplecza RESTful, w tej chwili powinieneś użyć Backbone.
Aby udzielić bardziej złożonej odpowiedzi: to naprawdę zależy od tego, co robisz. Jak powiedzieli inni, Ember jest przeznaczony do różnych celów i spodoba się innym grupom ludzi. Moja krótka odpowiedź opiera się na włączeniu przez Ciebie wymagania RESTful.
W tej chwili Ember-Data (który wydaje się być domyślnym mechanizmem trwałości w Ember) nie jest jeszcze gotowy do produkcji. Oznacza to, że ma sporo błędów i, co najważniejsze, nie obsługuje zagnieżdżonych identyfikatorów URI (na przykład / posts / 2 / comments / 4556). Jeśli REST jest twoim wymaganiem, na razie będziesz musiał obejść ten problem, jeśli wybierzesz Ember (tj. Będziesz musiał go włamać, poczekać, zaimplementować coś takiego jak Ember-Data od zera lub nie używać -very-RESTful URI). Ember-Data nie jest ściśle częścią Ember, więc jest to całkowicie możliwe.
Główne różnice między nimi, oprócz wielkości, to w zasadzie:
Ember stara się zrobić dla Ciebie jak najwięcej, abyś nie musiał pisać tak dużo kodu. Jest bardzo hierarchiczna i jeśli Twoja aplikacja jest również bardzo hierarchiczna, prawdopodobnie będzie dobrze pasować. Ponieważ robi tak wiele dla Ciebie, może być trudno dowiedzieć się, skąd pochodzą błędy i wyjaśnić, dlaczego dochodzi do nieoczekiwanego zachowania (jest dużo „magii”). Jeśli jednak masz aplikację, która w naturalny sposób pasuje do typu aplikacji, którą zamierza tworzyć Ember, prawdopodobnie nie będzie to problem.
Backbone stara się robić jak najmniej dla Ciebie, abyś mógł zastanowić się nad tym, co się dzieje i zbudować architekturę pasującą do Twojej aplikacji (zamiast budować aplikację, która pasuje do architektury używanego frameworka). O wiele łatwiej jest zacząć, ale jeśli nie jesteś ostrożny, możesz bardzo szybko skończyć z bałaganem. Nie robi rzeczy takich jak obliczone właściwości, automatyczne rozpinanie zdarzeń itp. I pozostawia je tobie, więc będziesz musiał sam zaimplementować wiele rzeczy (lub przynajmniej wybrać biblioteki, które robią to za ciebie), chociaż to jest raczej cały punkt.
Aktualizacja : Wygląda na to, że od niedawna Ember obsługuje teraz zagnieżdżone identyfikatory URI, więc przypuszczam, że pytanie sprowadza się do tego, jak bardzo lubisz magię i czy Ember dobrze pasuje architektonicznie do Twojej aplikacji.
źródło
Myślę, że Twoje pytanie wkrótce zostanie zablokowane :) Pomiędzy tymi dwoma frameworkami jest kilka sporów.
Zasadniczo Backbone nie robi wielu rzeczy i dlatego go uwielbiam: będziesz musiał dużo kodować, ale będziesz kodować we właściwym miejscu. Ember robi wiele rzeczy, więc lepiej uważaj, co robi.
Dyskusja na serwerze jest jedną z niewielu rzeczy, które robi Backbone i robi z nią świetną robotę. Zacząłbym więc od Backbone, a następnie spróbowałbym Ember, jeśli nie jesteś w pełni zadowolony.
Możesz także posłuchać tego podcastu, w którym Jeremy Ashkenas, twórca Backbone, i Yehuda Katz, członek Ember, prowadzą miłą dyskusję
źródło