ngResource
schon scheint es wirklich einfach zu sein, Dinge mit ...
Was sind die Vor- und Nachteile der Verwendung von Restangular gegenüber ngResource ?
1.1.3 $resource
gibt Versprechen zurück und kann mit dem neuesten PR-Commit implementiert werden . Wird zukünftige Unterstützung angeboten, $resource
um zusätzliche Verben zu unterstützen, die Restangular verwendet? Und wenn das passiert, scheint Restangular zu verschwinden und irrelivant zu werden.
javascript
angularjs
restangular
ngresource
Dan Kanze
quelle
quelle
$http
Release-Änderungen an anglejs vorgenommen werden, können Sie kein Upgrade durchführen, da die Serviceanrufe von Restangualr "etwas anderes" erwarten und Sie dieses Framework, für das Sie sich entschieden haben, entkernen werden.Antworten:
Ich bin der Schöpfer von Restangular.
Ich habe einen Abschnitt in der README-Datei mit den Unterschieden zu $ resource erstellt. Sie können sie hier überprüfen https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource
Zusammenfassend lässt sich sagen, dass Restangular neben den zusätzlichen Funktionen und dem auf Versprechen basierenden Ansatz auch alle Ihre URLs verarbeiten kann, sodass Sie nichts darüber wissen müssen.
Angenommen, Sie haben so etwas für Autos: / users / 123 / cars / 456
In $ resource müssten Sie diese URL manuell erstellen und das $ resource-Objekt dafür manuell erstellen. Restangular hilft Ihnen dabei, indem es sich die URLs "merkt".
Also, wenn Sie an einem Ort tun
Hoffe das hilft!
quelle
.one('users', 123)
mehr oder weniger "Wissen" über Ihre URL als'/users/123'
? (spielt nur Devil's Advocate) Es scheint nur'/foo/123/bar/123'
viel einfacher zu sein als.one('foo', 123).one('bar', 123)
.var user = Restangular.one('users', 123).getList()
. Später im Code oder in einem anderen Controller tun Sie diesuser.getList('buildings')
. Hier kennen Sie nur den nächsten Typ, nämlich Gebäude, aber er fragt ab/users/123/buildings/
, sodass Sie nicht immer die vollständige URL kennen müssen$resource
- Ich impliziere nicht, dass es in keiner Weise irrelevant wird, nur dass es erwähnt wurde. Gibt es sachliche Nachteile oder Fallstricke, die wir beachten sollten?Ich fand Restangulars RequestInterceptor sehr praktisch, um einige Felder aus dem Objekt zu entfernen, bevor ich die Anfrage stellte. Die meisten REST-Webservices, mit denen ich derzeit arbeite, erwarten die ID in den Objektdaten in einer PUT-Anforderung beispielsweise nicht, nur in der URL. Im Allgemeinen erwarten sie keine zusätzlichen Datenfelder, die nicht durch PUT aktualisiert werden können (wie die ID oder ein Slug, der durch Festlegen des Titels usw. generiert wird). Ich fand das mit Restangular unkompliziert, obwohl ich nicht herausgefunden habe, wie ich es mit $ resource auf saubere Weise machen soll, aber ich bin mir sicher, dass es irgendwie möglich ist.
Natürlich könnte man auch den Webservice ändern, um diese zusätzlichen Felder einfach zu ignorieren, aber das ist nicht immer möglich.
quelle
ngResource gibt in der neuesten stabilen Version (derzeit 1.0.6) keine Versprechen zurück. Außerdem sieht es so aus, als ob Restangular mehr Verben als ngResource verfügbar macht (es setzt PUT, OPTIONS, PATCH usw. offen).
Wenn Sie die zusätzlichen Verben nicht benötigen und sich im instabilen Zweig von AngularJS befinden (der Versprechen für ngResource enthält), sehe ich keinen wichtigen Grund, Restangular über ngResource zu verwenden.
Verwenden Sie alles, womit Sie sich wohl fühlen.
quelle
$resource
gibt Versprechen zurück und kann mit dem neuesten PR-Commit implementiert werden. stackoverflow.com/questions/16429832/… Wird zukünftiger Support angeboten$resource
, um zusätzliche Verben zu unterstützen? Und wenn das passiert, scheint Restangular zu verschwinden und irrelivant zu werden.Im Anschluss an die obigen Antworten und für neue Leser wie mich, die an diesen Gedanken interessiert sind:
Meiner Meinung nach ist die einzige Garantie für das Überleben einer Open-Source- Bibliothek die darauf aufbauende Community. Ein bestes Beispiel wären mariaDB und WebScaleSQL, die beide als wachsende Grundlage für das großartige relationale Datenbankverwaltungssystem MySQL geboren wurden.
Zum jetzigen Zeitpunkt geht Restangular
having 6699 stars and 727 forks
nun zu Restangular 2.0 über, das AngularJs 2.0 und ES6 unterstützen soll.quelle
Für eine schnelle, einfache Website, die Sie mit minimaler Unterstützung für immer betreiben möchten, würde ich den integrierten eckigen http HttpClient verwenden, wer auch immer, wenn ich an einem Projekt arbeite, das ich liebe und das mir Spaß macht und ich versuche, alle coolen Technologien zu nutzen Ich werde Ngx-Restangular verwenden
Außerdem sollten Sie wissen, dass ngx-restangular nur mit RESTful-Diensten funktioniert, wie der Name schon sagt. Für Dienste, die SOAP bereitstellen, können Sie Ngx-Restangular nicht verwenden
https://ngx-restangular.com/
That being said Ich würde NGX-restangular der meisten die Zeit nutzen , wie ich die Arbeit an Projekt immer versuchen , dass ich kühl finden und versuchen , das umzusetzen , was ich denke , ist am besten.
Viel Glück!
quelle