AngularJS服务与工厂优势和缺点

时间:2014-12-17 06:39:01

标签: angularjs dependency-injection angularjs-service angularjs-factory

我确定这会让一些初学者感到困扰,AngularJS服务优于工厂和副作用的优点和缺点是什么?

1 个答案:

答案 0 :(得分:4)

服务 vs 工厂


enter image description here

工厂和服务之间的区别就像functionobject之间的区别

工厂提供商

  • 给我们函数的返回值即。您只需创建一个对象,向其添加属性,然后返回相同的对象。当您将此服务传递到控制器时,该对象上的这些属性现在将通过您的工厂在该控制器中可用。 (假设情景)

  • Singleton

  • 可重复使用的组件

  • 可以使用其他依赖项

  • 通常在服务实例需要复杂的创建逻辑时使用

  • 用于不可配置的服务

  • 如果您正在使用对象,则可以使用工厂提供程序。

  • 语法:module.factory('factoryName', function);

服务提供商

  • 为我们提供一个函数(对象)的实例 - 您只需使用'new'关键字进行实例化,然后您将向'this'添加属性,服务将返回'this'。当您传递服务时在您的控制器中,“this”上的这些属性现在可以通过您的服务在该控制器上使用。 (假设情景)

  • 单身人士,只会创建一次

  • 可重复使用的组件

  • 依赖项作为构造函数参数注入

  • 用于简单的创建逻辑

  • 如果您正在使用课程,则可以使用服务提供商

  • 语法:module.service(‘serviceName’, function);

在下面的示例中,我定义了MyServiceMyFactory。请注意.service如何使用this.methodname.创建服务方法在.factory中我创建了一个工厂对象并为其分配了方法。

AngularJS .service


module.service('MyService', function() {

    this.method1 = function() {
       //..
       return functionValue;
    }

    this.method2 = function() {
       //..
       return functionValue;
    }
});

AngularJS .factory


module.factory('MyFactory', function() {

    var factory = {}; 

    factory.method1 = function() {
       //..
    }

    factory.method2 = function() {
       //..
    }

    return factory;
});

另外看看这些美丽的东西

<强> Confused about service vs factory

AngularJS Factory, Service and Provider

Angular.js: service vs provider vs factory?