2016-06-13 51 views
2

我期待構建一個可以以兩種不同方式運行的Angular2應用程序 - 無論是在電子內部還是通過CLI。基本上應用程序的底層組件是一組服務。在應用程序的Electron版本中,這些服務將通過一組交互式組件公開,但是,對於CLI版本,它們將可以使用節點進行訪問。在瀏覽器外使用Angular2

此刻,我在研究/的PoC階段 - 試圖確認這是可能的,2個問題已經出現:

  1. 角是否支持其他平臺?看來引導方法只適用於瀏覽器。
  2. 似乎Angular2不支持服務內的注入服務,除非它們都在組件/應用程序級別定義(即服務沒有注入器)。我不想在應用程序級別爲我的所有服務添加所有依賴關係 - 事實上,這不起作用,因爲我需要非單身人員。有沒有人爲此制定瞭解決方法?

也許Angular2不適合這個。

回答

1
  1. 你的意思是什麼「其他平臺」? Angular2是瀏覽器的Web框架。 Electron使用瀏覽器,因此可以在那裏使用。 Ionic有一個從Angular到本地表示的翻譯層。

Angular的構建方式可以擴展到其他平臺上使用。

  1. Angular2支持向服務注入服務。它不支持的是在服務級別聲明提供者。這僅支持bootstrap()以及組件或指令。

我並不熱衷於我對我所有的服務都依賴於應用層面

您可以創建你的模塊在數組變量,包含所需提供補充。如果一個模塊需要使用或導出多個模塊的提供者,則模塊可以從其他模塊中導出包含這些變量的變量。提供者可以任意嵌套。然後,您可以導出一個或多個此類頂級變量,以將其添加到bootstrap()或者應該定義提供程序範圍的根組件或其他組件。

事實上,這將無法正常工作,因爲我需要非單身人士。有沒有人爲此制定瞭解決方法?

前者與非單身無關。取決於你需要什麼類型的非單身人士,有不同的方式。

如果您向組件添加提供程序,則此組件是維護單個實例的作用域的根目錄。此組件及其所有子組件(如果它們沒有註冊相同的提供程序)將在每個請求中獲取此提供程序維護的單個實例。

如果您將提供程序註冊爲工廠函數,則可以注入工廠以爲每次調用工廠函數獲取新實例。

+0

您實際上是想構建一個沒有圖形用戶界面的Angular CLI應用程序嗎? Angular的構建是爲了能夠在沒有GUI的情況下運行(https://github.com/angular/universal),但這只是爲了特定目的(搜索引擎優化和加載後的更快的初始視圖)。基本上你只需要提供一個自定義渲染器,以便能夠在節點上運行它並使用替代輸入/輸出而不是瀏覽器。 –

+0

感謝Günter - 感謝您花時間。 「其他平臺」是指命令行界面(節點),而不是瀏覽器。因此,我認爲我不能使用組件,因爲沒有HTML表示。相反,我認爲我會創建服務(標準JS類),這些服務可以通過組件(In electron)或通過CLI觸發。我喜歡使用工廠創建類的非單例版本的方法,但是,在理想的世界中,我可以指定服務提供者 - 對我來說,它絕對是一種限制。 – user2294382

+0

其實你可以使用組件,但如前所述,你需要一個自定義的渲染器。無法指定提供商的服務是一個限制。還有其他人。請認爲Angular2是一個完全新的框架,與它的前身很少有相似之處,而Angular2仍然是預發佈的。這意味着當高優先級功能被解決時會有改進。 –