Lợi thế của việc sử dụng Restangular so với ngResource là gì?


133

ngResourceđã dường như thực sự đơn giản để thực hiện điều này với ...

Ưu điểm / nhược điểm của việc sử dụng Restangular so với ngResource là gì?

1.1.3 $resourcesẽ trả lại lời hứa và có thể được thực hiện bằng cách sử dụng cam kết PR mới nhất . Hỗ trợ trong tương lai sẽ được cung cấp $resourceđể hỗ trợ các động từ bổ sung mà Restangular làm? Và nếu điều đó xảy ra thì Restangular dường như sẽ biến mất và trở nên không liên quan.


41
Tại sao lại đóng? Đây là một câu hỏi hợp lệ nên có câu trả lời dứt khoát. Đặc biệt là rất sớm trong trò chơi khi bạn đang cố gắng quyết định sử dụng những gì cho các cuộc gọi dịch vụ của bạn. Điều gì xảy ra trong ba tháng khi anh chàng này ngừng hỗ trợ cho Restangular vì ngResource của Google đã bắt kịp tất cả các tính năng mà nó bị thiếu. Sau đó, nếu các $httpthay đổi phát hành chính được thực hiện cho angularjs --- bạn sẽ không thể nâng cấp vì các cuộc gọi dịch vụ của Restangualr sẽ mong đợi "một cái gì đó khác" và cuối cùng bạn sẽ đưa ra khuôn khổ này mà bạn "quyết định thực hiện".
Dan Kanze


@DanKanze: Người dùng SO cấp trung rất gần gũi với những câu hỏi như thế này. Thật là bực bội vì bạn chắc chắn không hỏi "cái nào tốt hơn" ... Gợi ý duy nhất của tôi là hãy cẩn thận diễn đạt các câu hỏi trong tương lai để không lôi kéo "Gestapo chủ quan" giáng xuống bạn trong toàn bộ khả năng của chúng.
rinogo

Câu trả lời:


232

Tôi là người tạo ra Restangular.

Tôi đã tạo một phần trên README với sự khác biệt so với $ resource. Bạn có thể kiểm tra chúng tại đây https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource

Dù sao, như một tổng hợp, bên cạnh các tính năng bổ sung và cách tiếp cận dựa trên lời hứa, ý tưởng là Restangular cũng có thể xử lý tất cả các URL của bạn, để bạn không phải biết bất cứ điều gì về chúng.

Giả sử rằng bạn có một cái gì đó như thế này cho xe ô tô: / users / 123 / Cars / 456

Trong $ resource, Bạn sẽ phải xây dựng URL đó theo cách thủ công và bạn cũng phải xây dựng đối tượng $ resource cho việc này theo cách thủ công. Restangular giúp bạn trong việc này bằng cách "ghi nhớ" các URL.

Vì vậy, nếu bạn làm ở một nơi nào đó

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

Hi vọng điêu nay co ich!


45
+1 để nhảy vào đây. Ai giải thích rõ hơn thì chàng trai tự xây dựng nó haha!
Dan Kanze

27
Làm thế .one('users', 123)nào nhiều hoặc ít "biết" về URL của bạn hơn '/users/123'? (chỉ chơi người ủng hộ của Devil) Có vẻ như '/foo/123/bar/123'nó dễ hơn nhiều .one('foo', 123).one('bar', 123).
Ben Lesh

5
Ý tưởng là tại một số điểm, bạn chỉ cần biết tên thực thể và id. Vì vậy, trước tiên bạn làm một cái gì đó nói dối var user = Restangular.one('users', 123).getList(). Sau đó trong mã hoặc trong một số bộ điều khiển khác, bạn làm user.getList('buildings'). Ở đây, bạn chỉ cần biết loại tiếp theo là các tòa nhà, nhưng nó truy vấn /users/123/buildings/, vì vậy bạn không cần phải biết toàn bộ URL mọi lúc
mgonto

3
Tốt nhưng một chiều. "Không liên quan" có thể của Restangular đã được đề xuất trong chủ đề này liên quan đến các cải tiến gần đây của $resource- Tôi không ngụ ý rằng nó sẽ trở nên không liên quan bởi bất kỳ ý nghĩa nào, chỉ là nó đã được đề cập. Bất kỳ nhược điểm thực tế hoặc gotchas chúng ta nên nhận thức?
youri

3
không có nhiều thứ trong đó README đã lỗi thời với phiên bản ngresource hiện tại hơn? (tức là / sử dụng lời hứa, trang trí đối tượng phản hồi thông qua biến
đổiResponse

8

Tôi thấy RequestInterceptor của Restangular khá tiện dụng để xóa một số trường khỏi đối tượng trước khi thực hiện Yêu cầu. Hầu hết các dịch vụ web REST mà tôi hiện đang làm việc không mong đợi id trong dữ liệu đối tượng trong yêu cầu PUT chẳng hạn, chỉ trong url. Nói chung, họ không mong đợi các trường dữ liệu bổ sung mà PUT không thể cập nhật (như id hoặc sên được tạo bằng cách đặt tiêu đề, v.v.). Tôi thấy điều này đơn giản với Restangular trong khi tôi chưa tìm ra cách thực hiện với $ resource một cách sạch sẽ, nhưng tôi chắc chắn bằng cách nào đó có thể.

Rõ ràng người ta cũng có thể thay đổi dịch vụ web để bỏ qua các trường bổ sung đó, nhưng điều đó không phải lúc nào cũng có thể.


3

ngResource không trả lại lời hứa trong bản phát hành ổn định mới nhất (hiện tại là 1.0.6). Ngoài ra, có vẻ như Restangular hiển thị nhiều động từ hơn ngResource (nó hiển thị PUT, TÙY CHỌN, VÒI, v.v.).

Nếu bạn không cần các động từ bổ sung và nằm trên nhánh không ổn định của AngularJS (bao gồm các lời hứa cho ngResource), tôi không thấy bất kỳ lý do chính nào để sử dụng Restangular trên ngResource.

Sử dụng bất cứ điều gì bạn cảm thấy thoải mái với.


2
1.1.3 $resourcesẽ trả lại lời hứa và có thể được thực hiện bằng cách sử dụng cam kết PR mới nhất. stackoverflow.com/questions/16429832/ ( Liệu hỗ trợ trong tương lai có được cung cấp $resourceđể hỗ trợ các động từ bổ sung không? Và nếu điều đó xảy ra thì Restangular dường như sẽ biến mất và trở nên không liên quan.
Dan Kanze

@DanKanze Tôi không chắc về hỗ trợ trong tương lai cho các động từ bổ sung. Đối với hầu hết các trường hợp sử dụng, các động từ bổ sung là không cần thiết, vì vậy tôi sẽ không mong đợi rằng nó sẽ được xây dựng bất cứ lúc nào, nhưng điều đó không có nghĩa là nó sẽ không xảy ra.
rtcherry

2
@DanKanze - Tôi nghi ngờ nó sẽ trở nên không liên quan. Restangular cung cấp hỗ trợ tốt hơn nhiều cho các tài nguyên lồng nhau, đây là một yêu cầu đối với một số nhà phát triển. Một cái gì đó mà tài nguyên Ng không hỗ trợ đặc biệt tốt. Ngoài ra, ng-resource cũng không tuân theo các quy ước RESTful, điều mà tôi đã nói về blog của mình.
Oddman

@Oddman điểm hay về giao phối tài nguyên lồng nhau, đặc biệt hữu ích cho phụ trợ Rails.
ardochhigh

1

Theo các câu trả lời trên và cho những độc giả mới , như tôi, quan tâm đến những suy nghĩ đó:

"Và nếu điều đó xảy ra thì Restangular dường như sẽ biến mất và trở nên không liên quan."

"Điều gì xảy ra trong ba tháng khi anh chàng này ngừng hỗ trợ cho Restangular vì ngResource của Google đã bắt kịp tất cả các tính năng mà nó bị thiếu."

  • [ hỏi 2 năm trước ]

Theo tôi, bảo đảm duy nhất cho sự tồn tại của một thư viện nguồn mở là cộng đồng được xây dựng xung quanh nó. một ví dụ tốt nhất sẽ là mariaDBWebScaleSQL mà cả hai đều được sinh ra như một nhánh rẽ phát triển của hệ thống quản lý cơ sở dữ liệu quan hệ tuyệt vời MySQL.

Tại thời điểm viết bài này, Restangular having 6699 stars and 727 forkshiện đang chuyển sang Restangular 2.0 nhằm hỗ trợ angularJs 2.0 và ES6.


0

Đối với trang web đơn giản nhanh chóng mà bạn muốn chạy mãi mãi với sự hỗ trợ tối thiểu, tôi sẽ sử dụng http httpClient góc cạnh tích hợp bất cứ ai khi tôi làm việc trong một dự án mà tôi yêu thích và tôi đang tận hưởng và cố gắng sử dụng tất cả các công nghệ tuyệt vời sau đó Tôi sẽ sử dụng Ngx-Restangular

Ngoài ra, bạn nên biết rằng ngx-restangular chỉ hoạt động với các dịch vụ RESTful như tên gợi ý. Vì vậy, đối với các dịch vụ cung cấp SOAP, bạn sẽ không thể sử dụng Ngx-Restangular

https://ngx-restangular.com/

Điều đó được nói rằng tôi sẽ sử dụng ngx-restangular hầu hết thời gian vì tôi luôn cố gắng làm việc trên dự án mà tôi thấy mát mẻ và cố gắng thực hiện những gì tôi nghĩ là tốt nhất.

May mắn nhất!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.