Javascript AngularJS-为什么要使用服务?

Javascript AngularJS-为什么要使用服务?,javascript,angularjs,Javascript,Angularjs,我一直在一个新项目中使用AngularJS,我非常喜欢它。如此之多,我想我会用它做我未来所有的网络项目。我已经读了很多关于Angular中不同类型的提供者的书,并且使用了很多工厂和价值观 我理解服务和工厂之间的区别,因为服务是传递给module.Service()的函数的实例,工厂是传递给module.Factory()的函数的返回值(在我的例子中通常是对象文字)。我真的不明白你为什么需要使用服务 服务的功能似乎与从工厂函数返回带有属性和方法的对象文字相同。例如: module.service(

我一直在一个新项目中使用AngularJS,我非常喜欢它。如此之多,我想我会用它做我未来所有的网络项目。我已经读了很多关于Angular中不同类型的提供者的书,并且使用了很多工厂和价值观

我理解服务和工厂之间的区别,因为服务是传递给module.Service()的函数的实例,工厂是传递给module.Factory()的函数的返回值(在我的例子中通常是对象文字)。我真的不明白你为什么需要使用服务

服务的功能似乎与从工厂函数返回带有属性和方法的对象文字相同。例如:

module.service('MyService', function () {
    this.value = 'Hello';

    this.sayValue = function () {
        alert(this.value);
    };
});

module.factory('MyFactory', function () {
    // Can also do some things before return statement
    return {
        value: 'Hello',
        sayValue: function () {
            alert(this.value);
        }
    };
});
工厂增加了一项功能,可以在遇到return语句之前执行一些操作

有人能解释一下他们在服务和工厂使用之间的界限吗

如果您想执行以下操作,请提前感谢

,如中的文档所示:

myApp.factory('unicornLauncher', ["apiToken", function(apiToken) {
  return new UnicornLauncher(apiToken);
}]);
然后你可以做:

myApp.service('unicornLauncher', ["apiToken", UnicornLauncher]);
医生说这是

简单多了


但我不得不说,在我看来,我认为这并不清楚,在这种情况下,节省一行代码是不值得的。为了清晰和灵活,我现在总是使用工厂。

可能与那篇文章重复,或者我读过那篇文章,我知道区别是什么,但就是不明白为什么你会使用服务而不是工厂。我正在寻找一个工厂不适合的服务用例,我的方向正好相反。我倾向于使用服务,而不是使用工厂。无论什么能让你的船浮起来。这应该对你有用:我认为这是一个好问题,但有点基于观点。我想更多的帮助可以在programmers.stackexchange.com上找到。在那里你可以找到关于各种主题的好建议/机会,我同意。我还认为,
UnicornLauncher
可以是一个对象文本。当你认为所有的角度提供者都是独裁者时,我看不出创建<代码>新的UnnRunnLunter < /C>的优势。