2017-03-17 50 views

回答

3

ES6/TypeScript類沒有任何變化。它們只是JavaScript構造函數的語法糖。

factory服務的好用例可以通過消除的過程來計算出來。

由於service服務是最好的OOP味單位:

class FooClass { 
    static $inject = [...]; 
    constructor(...) {} 
} 

app.service('foo', FooClass); 

而且value服務是最好的不是從構建類,不涉及DI單身單位:

app.value('bar', 'bar'); 
app.value('Baz', BazClass); 

factory服務可用於其餘案例。即當一個服務需要DI和返回的值不能被容易地從一個類構造的 - 的函數,一個原語,即從函數調用返回的對象:

app.factory('qux', ($q) => $q.all([...])); 
3

我們有同樣的問題,有兩種多年前。決定是保持角系統,只建立角度服務。無論是角廠還是打字稿都是靜態的。原因是我們可以跟蹤如何創建和共享服務。 (由硬)

要回答你的問題,角廠是一個對象,仍然需要在角系統注射基礎。如果你想保持緊張的角度,這是很好的。

另一方面,打字稿更一般。當你調用一個靜態函數時,它只是一個函數。就像你可以在任何其他角度導入它,然後使用它。

1

一些關於JavaScript的圖案:

甲用於在JavaScript中創建對象的常見模式是模塊模式。模式涉及從將作爲公共API的函數返回對象。

模塊模式有一種流行變化,稱爲顯示模塊模式。揭示模塊模式會發生什麼事情,事情開始明確地是私人的,然後選擇是否公開。

相關問題