Angular $resource: 是每个资源都有一个数据服务更好,还是一个灵活的数据服务来进行多次调用?

Angular $resource: Is it better to have a data service for each resource or a flexible data service to make multiple calls?

试图弄清楚是创建一个通用的 $resource 驱动数据服务还是为不同的调用创建多个服务更好。

例如:

我有 api/user/:userId/events/:eventId 并说 api/user/:userId/beers/:beerId

变体 (A):

function UserDataService( $resource, API_URL ) {
    return function (whichResource){
        return $resource( API_URL + whichResource, {userId: '@_userId'} );
    }
}

UserMainController( UserDataService, RESOURCE ) {
    var UserMainCtrl = this;
    UserMainCtrl.events = UserDataService( RESOURCE.USERS.EVENT.LIST ).get({userId:1});
    UserMainCtrl.beers = UserDataService( RESOURCE.USERS.BEER.LIST ).get({userId:1});

}

变体 (B):

function UserEventService( $resource, API_URL, RESOURCE ) {
   return $resource( API_URL + RESOURCE.USERS.EVENT.LIST, {userId: '@_userId'} );

}

function UserBeerService( $resource, API_URL, RESOURCE ) {
   return $resource( API_URL + RESOURCE.USERS.EVENT.LIST, {userId: '@_userId'} );
}  

UserMainController( UserService, UserBeerService) {
    var UserMainCtrl = this;
    UserMainCtrl.events = UserEventService.get({userId:1});
    UserMainCtrl.beers = UserBeerService.get({userId:1});
}

哪个更好,为什么?或者完全不同的东西?

我看到的例子只是一维的,例如电影,而不是用户加电影加音乐。

谢谢!

您肯定应该使用方法 B。甚至更好地将每个 $resource 的文件分开。例如,对于与资源和路由器相关联的每个模块,您可以拥有类似于此文件夹结构的内容。

Js/
   components/
              beers/
                  beers-resource.js
                  beers-controller.js
                  beers-router.js
              wines/
                  wines-resource.js
                  wines-controller.js
                  wines-router.js

如果你问我,这是最好的方法,因为你的代码在较长的 运行 中将更易于阅读和维护。