2014-09-30 43 views
5

在我发现在angularJs中使用服务的大多数例子中,我发现服务实际上是一个工厂。例如在AngularJS中为什么约定会命名为工厂服务

angular.module('myModule').factory('customerService', [ 
     '$http', 
     function ($http) { 
      return { 

       get: function() { 
        return doSomeStuff(); 
       } 
      }; 
     } 
    ]); 

笔者创建了一个工厂,但称它的CustomerService,而不是customerFactory。为什么是这样?对工厂是否有一些耻辱,或者是角度服务如此超级酷,以至于每个人都想要写他们的荣誉,即使他们没有。另外,为了让任何回答这个问题的人都清楚,我并没有要求比较工厂或服务的优点,而是问为什么角度社区故意误导他们的对象。

+0

我想'factory'名相关服务被实例化的方式。 – 2014-09-30 18:56:34

+0

可能的重复?给了!我明确表示我并不是要求比较优势 – Twisted 2014-09-30 19:30:28

回答

1

尽管您发布的代码确实注册了服务工厂,但$ provide.factory()的第一个参数是服务名称实例(服务是单例)。当您声明服务的依赖关系时,$名称将使用此名称来确定调用哪个工厂。查看更多在这里:

https://docs.angularjs.org/api/auto/service/$provide

2

工厂是构建服务时可以指定外部依赖关系的最基本的提供者。这是Angularjs文档中关于命名的说明。

https://docs.angularjs.org/guide/providers

最佳实践:命名工厂用作工厂(例如, apiTokenFactory)。虽然这个命名约定不是必需的,但 可以帮助您在 调试器中导航代码库或查看堆栈跟踪。

所以这是一个开发者的选择,但肯定不是推荐的方式。

+0

正如你所说的文档所说的最佳实践是将工厂称为工厂。然而,更广泛的社区忽略了这一点,并称工厂为服务。为什么? – Twisted 2014-09-30 23:12:49

+2

因为他们都归结为服务。什么'注射器'创建称为服务。只有创建服务的配方才不同,如_factory_或_provider_。用角度来说,它叫服务并不是错的。开发人员需要使用服务或工厂后缀。 – idursun 2014-10-01 08:18:19

相关问题