Backbone.js has models and collections.
Ember.js has Ember Data and ember-model.
What about AngularJS?
$resource for data models? angular.module('login').provider('User', function() { this.$get = ['$resource', function($resource) { var User = $resource('http://localhost:8080/user/:_id', {}, { update: { method: 'PUT' } }) return User; }]; }); Hello Restangular!
// GET: /users Restangular.all('users').getList() .then(function(users) { $scope.user = users[0]; }) // GET: /users/1/items $scope.user.getList('items'); // POST: /users/1/customMessage $scope.user.customMessage(); // Complex Queries // GET: /user/1/messages/1/from/12/starred $scope.user.one('emails', 1).one('from', 12).getList('starred');
The $resource factory takes away the pain of writing
boilerplate code using $http

$resource does not let you do much once the data is transferred to
the JavaScript application and any custom behavior will
require a lot of boilerplate code
Restangular is a library that reduces unnecessary
boilerplate code to write a simple query.

It also supports nested resources and there's no need to create a
separate $resource object for each request.
// Add as a dependency angular.module('sample-app', ['restangular']); angular.module('sample-app').controller('SampleCtrl', function($scope, Restangular) { // ... }); // GET /users/100/properties/200/tiles/300 Restangular .one("users", 100) .one("properties", 200) .one("tiles", 300) .get(); // POST /users/100/properties/200/tiles Restangular .one("users", 100) .one("properties", 200) .all("tiles") .post({name: "New Tile"}); // DELETE /users/100 Restangular .one("users", 100) .remove(); // DELETE /users/100/properties/200/tiles/300 Restangular .one("users", 100) .one("properties", 200) .one("tiles", 300) .remove(); // Declare factory module.factory('Accounts', function(Restangular) { return Restangular.service('accounts'); }); ... Accounts.one(2).get() // GET to /accounts/2 Accounts.post({ data }) // POST to /accounts ... $scope.students = Restangular.all('students').getList().$object; <tr ng-repeat="student in students"> <td>{{student.name}}</td> </tr> https://github.com/mgonto/restangular