我确定这会让一些初学者感到困扰,AngularJS服务优于工厂和副作用的优点和缺点是什么?
答案 0 :(得分:4)
工厂和服务之间的区别就像function
和object
之间的区别
工厂提供商
给我们函数的返回值即。您只需创建一个对象,向其添加属性,然后返回相同的对象。当您将此服务传递到控制器时,该对象上的这些属性现在将通过您的工厂在该控制器中可用。 (假设情景)
Singleton
可重复使用的组件
可以使用其他依赖项
通常在服务实例需要复杂的创建逻辑时使用
用于不可配置的服务
如果您正在使用对象,则可以使用工厂提供程序。
语法:module.factory('factoryName', function);
服务提供商
为我们提供一个函数(对象)的实例 - 您只需使用'new'关键字进行实例化,然后您将向'this'添加属性,服务将返回'this'。当您传递服务时在您的控制器中,“this”上的这些属性现在可以通过您的服务在该控制器上使用。 (假设情景)
单身人士,只会创建一次
可重复使用的组件
依赖项作为构造函数参数注入
用于简单的创建逻辑
如果您正在使用课程,则可以使用服务提供商
语法:module.service(‘serviceName’, function);
在下面的示例中,我定义了MyService
和MyFactory
。请注意.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 强>