2014-09-30 77 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