ResResgular over ngResource kullanmanın avantajı nedir?


133

ngResourcezaten bir şeyler uygulamak gerçekten basit görünüyor ...

Kullanmanın avantajları / dezavantajları nelerdir Restangular üzerinde ngResource ?

1.1.3 $resourcevaatleri iade edecek ve en son PR taahhüdü kullanılarak aktarılabilir . $resourceRestangular'ın ek fiillerini desteklemek için gelecekte destek sunulacak mı? Ve eğer bu olursa, Restangular kaybolacak ve ilgisiz olacak gibi görünüyor.


41
Neden kapalı? Bu, kesin cevapları olması gereken geçerli bir sorudur. Özellikle servis çağrısında ne kullanacağınıza karar vermeye çalışırken oyunda çok erken. Google'ın ngResource'u eksik olduğu tüm özelliklere yetiştiği için bu adam Restangular için destek bıraktığında üç ay içinde ne olur. Daha sonra $httpangularjs'de büyük sürüm değişiklikleri yapıldıysa --- Restangualr'ın servis çağrıları "başka bir şey" bekliyor olacağından yükseltme yapamayacaksınız ve bu çerçeveyi "gitmeye karar verdiniz" diye bağırmaya başlayacaksınız.
Dan Kanze

1
Onları buradan kontrol edin github.com/mgonto/restangular/blob/master/…
mgonto

@DanKanze: Orta düzey SO kullanıcıları böyle sorulardan memnunlar. Kesinlikle "hangisi daha iyi" diye sormuyorsanız, gerçekten sinir bozucu ... Tek önerim, "Öznel Gestapo" yu tüm gücüyle alçalmaya teşvik etmemek için gelecekte soruları dikkatlice ifade etmektir.
rinogo

Yanıtlar:


232

Restangular'ın yaratıcısıyım.

Ben $ kaynak karşı farkları ile README bir bölüm oluşturdum. Onları buradan kontrol edebilirsiniz https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource

Her neyse, özet olarak, ek özelliklerin ve söz tabanlı yaklaşımın yanı sıra, Restangular'ın tüm URL'lerinizi de ele alabileceği, böylece onlar hakkında hiçbir şey bilmenize gerek kalmayacağı düşünülmektedir.

Otomobiller için böyle bir şeyiniz olduğunu varsayalım: / users / 123 / cars / 456

$ Resource'da, bu URL'yi manuel olarak oluşturmanız ve ayrıca bunun için $ resource nesnesini manuel olarak oluşturmanız gerekir. Restangular, URL'leri "hatırlayarak" bu konuda size yardımcı olur.

Yani bir yerde yaparsan

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')

Bu yardımcı olur umarım!


45
Buna atlamak için +1. O zaman kendini inşa eden adamı açıklamak daha iyi olur haha!
Dan Kanze

27
.one('users', 123)URL'niz hakkında az çok "bilen" nasıl '/users/123'? (sadece Şeytan'ın savunucusunu oynuyor) Görünüşe '/foo/123/bar/123'göre çok daha kolay .one('foo', 123).one('bar', 123).
Ben Lesh

5
Fikir şu ki, bir noktada sadece varlık adını ve kimliğini biliyorsunuzdur. Yani önce yalan söyleyen bir şey yapıyorsun var user = Restangular.one('users', 123).getList(). Daha sonra kodda veya başka bir denetleyicide yaparsınız user.getList('buildings'). Burada, sadece bina olan bir sonraki türü biliyorsunuz, ancak sorgular /users/123/buildings/, bu yüzden her zaman tam URL'yi bilmek zorunda değilsiniz
mgonto

3
İyi ama tek taraflı. Restangular'ın olası "ilgisizliği", bu konudaki son gelişmelerle ilgili olarak önerilmiştir - $resourceSadece belirtildiği gibi, herhangi bir yolla ilgisiz hale geleceğini ima etmiyorum. Farkında olmamız gereken herhangi bir gerçek dezavantaj veya gotchas?
youri

3
README'de ngresource'un daha güncel bir sürümü ile eski olan şeylerin çoğu değil mi? (ör. / sözlerin kullanımı, transformResponse yoluyla yanıt nesnesini süsleme)
surtyaar

8

Ben Restangular'ın RequestInterceptor isteği yapmadan önce nesneden bazı alanları kaldırmak için oldukça kullanışlı buldum. Şu anda birlikte çalıştığım çoğu REST web hizmeti, örneğin yalnızca URL'de bir PUT isteğinde nesne verilerindeki kimliği beklemiyor. Genellikle PUT tarafından güncellenemeyen fazladan veri alanları beklemezler (id veya başlık ayarlanarak oluşturulan bir bilgi gibi). Ben $ kaynak ile temiz bir şekilde yapmak nasıl anladım değil iken ben Restangular ile açık olarak buldum, ama bunun bir şekilde mümkün olduğundan eminim.

Açıkçası, bu ekstra alanları görmezden gelmek için web hizmetini de değiştirebilir, ancak bu her zaman mümkün değildir.


3

ngResource, en son kararlı sürümde (şu anda 1.0.6) vaatlerde bulunmuyor. Ayrıca, Restangular ngResource'dan daha fazla fiil açığa çıkarır (PUT, OPTIONS, PATCH, vb.).

Ek fiillere ihtiyacınız yoksa ve AngularJS'nin dengesiz dalındaysanız (ngResource için vaatler içerir), ResResgular over ngResource kullanmak için önemli bir neden görmüyorum.

Kendinizi rahat hissettiğiniz her şeyi kullanın.


2
1.1.3 $resourcevaatleri iade edecek ve en son PR taahhüdü kullanılarak aktarılabilir. stackoverflow.com/questions/16429832/…$resource Ek fiilleri desteklemek için gelecekte destek sunulacak mı? Ve eğer bu olursa, Restangular kaybolacak ve ilgisiz olacak gibi görünüyor.
Dan Kanze

@DanKanze Gelecekte ek fiiller için destek konusunda emin değilim. Çoğu kullanım durumunda, ek fiiller gerekli değildir, bu yüzden yakında herhangi bir zamanda inşa edilmesini beklemezdim, ancak bu bunun olmayacağı anlamına gelmez.
rtcherry

2
@DanKanze - Alakasız olacağından şüpheliyim. Restangular, bazı geliştiriciler için bir gereklilik olan iç içe kaynaklar için çok daha iyi destek sağlar. Ng-source'un özellikle iyi desteklemediği bir şey. Buna ek olarak, ng-resource, blogumda bahsettiğim RESTful kurallarına uymuyor.
Oddman

@Odman özellikle Rails arka uçları için yararlı iç içe kaynaklar arkadaşı hakkında iyi bir nokta.
ardochhigh

1

Yukarıdaki yanıtlara ve benim gibi yeni okuyucular için bu düşüncelerle ilgilenen aşağıdaki gibi:

"Ve eğer bu olursa, Restangular kaybolacak ve ilgisiz olacak gibi görünüyor."

"Google'ın ngResource'u eksik olduğu tüm özelliklere yetiştiği için bu adam Restangular için destek bıraktığında üç ay içinde ne olacak."

  • [ 2 yıl önce sordu ]

Kanımca, açık kaynak kodlu bir kütüphaneden sağ çıkmanın tek garantisi, etrafında inşa edilen topluluktur. En iyi örnek, ikisi de büyük ilişkisel veritabanı yönetim sistemi MySQL için büyüyen bir çatal olarak doğan mariaDB ve WebScaleSQL olabilir .

Bu yazma zamanında Restangular having 6699 stars and 727 forksşimdi angularJs 2.0 ve ES6'yı destekleme amaçlı Restangular 2.0'a ilerliyor.


0

Asgari destekle sonsuza dek çalıştırmak istediğiniz hızlı basit web sitesi için, sevdiğim bir proje üzerinde çalışırken ve sonra tüm harika teknolojileri kullanmaya ve denemeye çalıştığımda yerleşik açısal http HttpClient'i kullanırım Ngx-Restangular kullanacağım

Ayrıca ngx-restangular RESTful hizmetleri ile sadece adından da anlaşılacağı gibi bilmelisiniz. Yani SOAP sağlayan hizmetler için Ngx-Restangular'ı kullanamazsınız.

https://ngx-restangular.com/

Bu varlık dedi ben NGX-restangular en çok zaman kullanırsınız Hep serin bulmak ve en iyi olanı uygulamaya çalışıyorum o proje üzerinde çalışması için deneyin.

İyi şanslar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.