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
如果你问我,这是最好的方法,因为你的代码在较长的 运行 中将更易于阅读和维护。
试图弄清楚是创建一个通用的 $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
如果你问我,这是最好的方法,因为你的代码在较长的 运行 中将更易于阅读和维护。