Angularjs 什么';工厂和服务的区别是什么?
我正在尝试与角工厂和服务。有人能告诉我这两者的区别吗Angularjs 什么';工厂和服务的区别是什么?,angularjs,Angularjs,我正在尝试与角工厂和服务。有人能告诉我这两者的区别吗 factory是否总是返回一个单例,但服务是一个实例?众所周知,我们可以定义如下服务: app.service('MyService', function () { this.sayHello = function () { console.log('hello'); }; }); app.controller('AppController', function (MyService) { MyService.sayHe
factory是否总是返回一个单例,但服务是一个实例?众所周知,我们可以定义如下服务:
app.service('MyService', function () {
this.sayHello = function () {
console.log('hello');
};
});
app.controller('AppController', function (MyService) {
MyService.sayHello(); // logs 'hello'
});
.service()
是我们模块上的一个方法,它采用一个名称和一个定义服务的函数。非常直截了当。定义后,我们可以在其他组件(如控制器、指令和过滤器)中注入并使用该特定服务,如下所示:
app.service('MyService', function () {
this.sayHello = function () {
console.log('hello');
};
});
app.controller('AppController', function (MyService) {
MyService.sayHello(); // logs 'hello'
});
现在和工厂一样:
app.factory('MyService', function () {
return {
sayHello: function () {
console.log('hello');
};
}
});
同样,.factory()
是我们模块上的一个方法,它还包含一个名称和一个函数,用于定义工厂。我们可以注入和使用这个东西,就像我们使用这个服务一样
我们可以看到,服务是构造函数,而工厂不是。在这个角度世界的深处,有这样一段代码,它在实例化时使用服务构造函数调用Object.create()
。然而,工厂函数实际上只是一个被调用的函数,这就是我们必须显式返回对象的原因
无论我们使用什么,service()
或factory()
,调用的始终是一个工厂,它为我们的服务创建了一个提供者
基本上,服务与工厂的区别如下:
他们都是单身人士
还要记住,在这两种情况下,angular都有助于您管理单身。无论您将服务或函数注入到何处或注入多少次,您都将获得对同一对象或函数的相同引用
来源:谷歌是你的朋友!