"service" 和 "Factory" 有什么区别?

What are the differences between "service" and "Factory"?

当我需要使用工厂或服务时,我试图找到真正的区别,但我总是在示例中找到相同的地方:

a) This is the way to create the "i18n" service...
b) This is the way to create the "i18n" factory...

就像把相同的代码按不同的顺序来做同样的事情。所以我一直在问自己:如果我能做到,真正的区别是什么?

另一个问题是在很多教程中人们对每个术语赋予不同的含义,所以现在我很困惑。

所以,我问:

  1. 服务是什么意思?
  2. 工厂是什么意思?
  3. 服务和工厂有什么区别?
  4. 什么时候需要使用服务?
  5. 什么时候需要使用工厂?

谢谢!

1.服务是什么意思?

2。工厂是什么意思?

服务和工厂的含义相同,即它们是 javascript 函数,负责执行特定任务。 Angular 服务服务和 Angular 工厂服务是我们可以创建 Angular 服务的方式,根据应用程序的需要,我们可以使用它们中的任何一种。

3。服务和工厂有什么区别?

在 Service 服务中,函数就像一个构造函数,您不需要初始化和 return 变量,服务会自动为您完成。

    myApp.service("LoginService", function () {        
        this.login = function (username, password) {                
           this.isLogged = true;      
      }        
    })

在控制器中,您可以使用以下代码访问该服务-

    LoginService.login($scope.form.Username, $scope.form.Password);        
    $scope.loggedMessage = LoginService.isLogged; 

然而,在工厂中,您必须显式初始化对象并return如下所示

    myApp.factory("LoginFactory", function () {
        var obj = {};
        obj.login  = function(username,password){            
            obj.isLogged = true;            
            return obj;
        }
        return obj;    
    })

在控制器中,您可以使用以下代码访问工厂-

    var obj = LoginFactory.login($scope.form.Username, $scope.form.Password);
    $scope.loggedMessage = obj.isLogged;

4.我什么时候需要使用服务?

应该用于简单的逻辑。它用于注册一个函数,该函数将用作对象的构造函数。例如 - 使用服务将用户的登录详细信息保存在对象中。

5.什么时候需要使用工厂?

Factory return 是一个对象的实例,您可以使用该对象访问工厂函数。例如,您有一个带有加、减、乘函数的 MathFactory。