2013-05-14 17 views
132

ngResource już wydaje się bardzo proste wdrożyć rzeczy z ...Jaka jest zaleta korzystania z opcji Restangular over ngResource?

Jakie są zalety/wady korzystania Restangular nad ngResource?

1.1.3 $resource zwróci obietnice i może zostać wprowadzony za pomocą latest PR commit. Czy przyszłe wsparcie będzie oferowane na $resource, aby wesprzeć dodatkowe czasowniki, które ma format "Przekątna"? A jeśli tak się stanie, Restangular wydaje się jakby zniknął i stał się nieistotny.

+41

Dlaczego blisko? To jest poprawne pytanie, które powinno mieć ostateczne odpowiedzi. Zwłaszcza na początku gry, gdy próbujesz zdecydować, czego chcesz użyć w rozmowach serwisowych. Co stanie się w ciągu trzech miesięcy, gdy ten facet upuści obsługę Restangular, ponieważ Google ngResource dopadł wszystkie funkcje, których mu brakowało. Następnie, jeśli główne zmiany "$ http" zostaną zmienione na angulary - nie będziesz mógł dokonać aktualizacji, ponieważ rozmowy serwisowe Restangualr będą oczekiwać "czegoś innego", a skończysz na tym, że "zdecydowałeś się pójść z ". –

+1

Sprawdź je tutaj https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource – mgonto

+0

@DanKanze: Użytkownicy średniego poziomu SO są bardzo zadowoleni z takich pytań. To naprawdę frustrujące, ponieważ zdecydowanie nie pytasz "co jest lepsze" ... Moją jedyną sugestią byłoby ostrożne frazowanie pytań w przyszłości, aby nie zachęcić "Subiektywnego Gestapo" do zejścia na ciebie w ich pełnej mocy. – rinogo

Odpowiedz

231

Jestem twórcą Restangular.

Utworzono sekcję na temat README z różnicami w stosunku do zasobu $. Możesz je sprawdzić tutaj: https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource

Podsumowując, oprócz dodatkowych funkcji i podejścia opartego na obietnicy, pomysł jest taki, że Restangular może obsłużyć wszystkie adresy URL, dzięki czemu nie musisz wiedzieć nic na ich temat.

Załóżmy, że masz coś podobnego do samochodów:/Users/123/samochody/456

w $ zasobu, można by skonstruować ten adres ręcznie i chcesz mieć również skonstruować $ zasób obiekt dla tego ręcznie. Restangular pomaga ci w tym "zapamiętywać" adresy URL.

więc jeśli w jakimś miejscu

Restangular.one("users", 123).get().then(function(user) { 
    $scope.user = user; 
}); 

// Some other code 

//Automatically does the request to /users/123/cars as it remembers in which object you're asking it. 
$scope.user.getList('cars') 

nadzieję, że to pomaga!

+44

+1 za wskoczenie w to. Kto lepiej wytłumaczyłby to facetowi, który sam to zbudował haha! –

+0

Dzięki :). Mam nadzieję, że teraz jest jasne. Dodałem sekcję do README, dzięki tobie i otrzymałem pozytywne komentarze na ten temat, ponieważ wiele osób nie zdawało sobie sprawy z głównych różnic, ponieważ zostały one rozproszone w pliku README BIIIG. Jeśli masz jakiekolwiek wątpliwości, możesz zamieścić pytanie @Gitub :) – mgonto

+27

jak to jest '.jeden ("users", 123) "mniej więcej" wie "o swoim adresie URL niż"/users/123 "? (po prostu grając adwokata diabła) Wygląda na to, że ''/foo/123/bar/123'' jest dużo łatwiejsze niż '.one ('foo', 123) .one ('bar', 123)'. –

2

ngResource nie zwraca obietnic w najnowszym stabilnym wydaniu (obecnie 1.0.6). Dodatkowo wygląda na to, że Restangular odsłania więcej czasowników niż ngResource (eksponuje PUT, OPTIONS, PATCH itd.).

Jeśli nie potrzebujesz dodatkowych czasowników i znajdujesz się w niestabilnej gałęzi AngularJS (która zawiera obietnice dla ngResource), nie widzę żadnego większego powodu, aby użyć Restangular zamiast ngResource.

Używaj wszystkiego, co Ci odpowiada.

+2

1.1.3 '$ resource' zwróci obietnice i może zostać wprowadzony w życie przy użyciu najnowszego zatwierdzenia PR. http://stackoverflow.com/questions/16429832/callback-after-async-foreach-angularjs/16447884#16447884 Czy przyszłe wsparcie będzie oferowane dla '$ resource' do obsługi dodatkowych czasowników? A jeśli tak się stanie, Restangular wydaje się jakby zniknął i stał się nieistotny. –

+0

@DanKanze Nie jestem pewien co do przyszłej obsługi dodatkowych czasowników. W większości przypadków dodatkowe czasowniki nie są konieczne, więc nie spodziewałbym się, że zostaną one zbudowane w najbliższym czasie, ale to nie znaczy, że tak się nie stanie. – rtcherry

+2

@DanKanze - Wątpię, że stałoby się nieistotne. Restangular zapewnia znacznie lepszą obsługę zasobów zagnieżdżonych, co jest wymogiem dla niektórych programistów. Coś, co Ng-zasób nie obsługuje szczególnie dobrze. Ponadto ng-resource nie stosuje się do konwencji RESTful, o czym mówiłem na moim blogu. – Oddman

8

Znalazłem RequestInter Restora Restangular całkiem przydatny do usunięcia niektórych pól z obiektu przed złożeniem Wniosku. Większość usług sieciowych REST, z którymi obecnie pracuję, nie spodziewa się, że identyfikator w danych obiektu w żądaniu PUT będzie, na przykład, w adresie URL. Zwykle nie oczekują dodatkowych pól danych, których nie można zaktualizować za pomocą PUT (np. Id, lub ślimak generowany przez ustawienie tytułu itp.). Stwierdziłem, że jest to proste z Restangular, a ja nie wymyśliłem, jak to zrobić z $ resource w czysty sposób, ale jestem pewien, że jest to możliwe.

Oczywiście można również zmienić serwis internetowy, aby zignorować te dodatkowe pola, ale nie zawsze jest to możliwe.

1

Jako kontynuacji powyższych odpowiedzi i nowych czytelników, jak ja, zainteresowanych tymi myślami:

„A jeśli tak się stanie Restangular Wygląda na to zniknie i stać irrelivant."

«Co dzieje się w ciągu trzech miesięcy, kiedy ten facet spada poparcie dla Restangular ponieważ Google ngResource wciągnąć do wszystkich funkcji go brakowało.»

  • [zapytał 2 lata temu]

moim zdaniem tylko Potwierdzasz przetrwać o open-source Biblioteka to społeczność zbudowana wokół niego. Najlepszym przykładem będzie mariaDB i WebScaleSQL, które narodziły się jako rosnące widły do ​​wielkiego systemu zarządzania relacyjnymi bazami danych MySQL.

W tym czasie pisania Przekątna having 6699 stars and 727 forks jest teraz przesuwana do przodu do Przekątnej 2.0, która ma obsługiwać kątowe Js 2.0 i ES6.

Powiązane problemy