工厂和服务有什么区别?

这个问题在这里已经有了答案:

  • angular.service vs angular.factory 9个答案

  • 众所周知,我们可以像这样定义一个服务:

    app.service('MyService', function () {
      this.sayHello = function () {
        console.log('hello');
      };
    });
    

    .service()是我们模块上的一个方法,它接受一个名称和一个定义该服务的函数。 非常直截了当。 一旦定义好了,我们可以在其他组件中注入和使用该特定服务,如控制器,指令和过滤器,如下所示:

    app.controller('AppController', function (MyService) {
      MyService.sayHello(); // logs 'hello'
    });
    

    现在和工厂一样:

    app.factory('MyService', function () {
      return {
        sayHello: function () {
          console.log('hello');
        };
      }
    });
    

    再次, .factory()是我们模块上的一个方法,它也需要一个名称和一个函数来定义工厂。 我们可以使用与服务完全相同的方式来注入和使用它。

    我们可以看到服务是构造函数,而工厂则不是 。 在这个Angular世界深处的某个地方,有这个代码在实例化时调用Object.create()和服务构造函数。 然而,工厂函数实际上只是一个被调用的函数,这就是为什么我们必须显式返回一个对象。

    无论我们使用什么, service()factory() ,它总是一个被调用的工厂,它会为我们的服务创建一个提供者。

    基本上服务和工厂的区别如下:

    app.service('myService', function() {
    
      // service is just a constructor function
      // that will be called with 'new'
    
      this.sayHello = function(name) {
         return "Hi " + name + "!";
      };
    });
    
    app.factory('myFactory', function() {
    
      // factory returns an object
      // you can run some code before
    
      return {
        sayHello : function(name) {
          return "Hi " + name + "!";
        }
      }
    });
    

    他们都是单身人士

    还要记住,在这两种情况下,angular都会帮助你管理一个单身人士。 无论您注入服务或功能的位置或次数如何,您都会得到与同一对象或功能相同的参考。

    来源:服务与工厂

    链接地址: http://www.djcxy.com/p/77885.html

    上一篇: what's the difference between factory and service?

    下一篇: How to write a numpy matrix in a text file