Angular Js:工厂、服务和提供商.何时使用哪个

Angular Js: Factory, Service and Providers. When to use which?

本文关键字:何时使 提供商 服务 Js 工厂 Angular      更新时间:2023-09-26

我发现网上有很多答案,这里有很多答案在堆栈溢出。但是,没有人澄清在哪种情况下使用哪一个,因为所有三个都可以执行相同的功能集?

请澄清。

提供程序是一种可配置的服务。如果使用 provider() 创建 Foo 服务,则可以在config()块中使用FooProvider

angular.module('MyApp', [])
    .provider('Foo', function () {
        ...
    })
    .config(function (FooProvider) {
        FooProvider.something('bar');
    })
    .run(function (Foo) {
        ...
    });

有关您可能希望将其用于什么目的的简单示例,请参阅 $logProvider

如果不需要服务的可配置...Provider,则factory()service()方法可以更轻松地创建服务,因为不需要执行复杂的提供程序设置。 factory/service 只是您不需要提供程序的简写便利构造函数。

factoryservice 之间的区别在于,factory接受典型的回调函数,而service期望一个"类",它将用new 来实例化。 例如:

// Javascript "class"
function Foo() {
    ...
}
Foo.prototype.bar = ...;
angular.module('MyApp', [])
    .service('Foo', Foo)
    .factory('Bar', function () {
        ...
    })
    .run(function (Foo, Bar) {
        ...
    });

有关如何编写提供程序或无提供程序服务的更多详细信息,请参阅 $provide 和指南。