我在项目中使用anularJS,我需要一个服务才能使用$ http.get方法获取JSON,我认为服务的语法更易于阅读:

app.service('ApiService' , function($http)
{
  var self = this;
  self.user = {};
  self.user.getByName = function(){};
  self.user.getByRate = function(){};

  self.events = {};

  self.events.getList = function(){};
  self.events.getByDate = function(){};

  return ({
    user : self.user,
    events : self.events
  });

});

然后可以这样称呼它:
$scope.reople = ApiService.use.getList('some url');

但是从我看到的很多页面(例如thisthisthis)中,似乎更受欢迎的是使用factory作为更好的方法。你能给我解释一下吗
  • 为什么工厂首选并且比服务更受欢迎?
  • 对于小组工作或开发现有代码的开发人员来说,哪个更可扩展和可维护?
  • 最佳答案

    .service()只是.factory()的派生版本,两者均从.provider()派生,它们都用于注册服务,以便在整个应用程序中通过DI使用。

    如果您想深入了解,请参阅AngularJS: Service vs provider vs factory
    .factory()受欢迎的原因可能是:

  • .service()太具体,您只能传递构造函数
  • .provider()太冗长,并非服务始终都可以配置
  • .factory()位于中间,可以满足几乎常见用法的需求。
    app.factory('ApiService' , function($http) {
      function ApiService() {
        var self = this;
        self.user = {};
        self.user.getByName = function(){};
        self.user.getByRate = function(){};
    
        self.events = {};
        self.events.getList = function(){};
        self.events.getByDate = function(){};
      };
    
      return new ApiService();
    });
    

    09-09 23:33
    查看更多