2016-10-06 33 views
8

我正在尋找一種奇怪情況的解決方案。讓我們快速瀏覽一下angular2-seed項目,以便更好地解釋:https://github.com/mgechev/angular2-seed/tree/master/src/client/appAngular 2的前端「微服務」

在該項目中,我們有3個獨立的模塊 - 關於,家庭,共享。我正在尋找的是一種隔離這些開發的方式,所以我們最終能夠獨立發佈每一個作品。例如,說A隊正在研究關於該部分,而B隊正在家中工作。每項工作都已完成,我們已準備好發佈,但我們意識到about部分缺少一項關鍵功能,但我們仍希望將更改發佈到home部分。我們正在尋找的是實現這一目標的一種方式。

這裏已經探索了一些解決方案,但我不是很滿意:

  • 有家庭完全不同的應用程序/約(在我眼裏,這消除了許多的SPA帶來的好處)。
  • 每個模塊(大約,家庭,共享)都集中到它自己的NPM包中。當我們開始部署時,我們可以通過一些方法來協調拉取這些模塊的所有已發佈的NPM包。
+0

你的問題到底是什麼? 「about」和「home」模塊有多隔離? – KTCO

+0

@KTCO這是我仍然需要弄清楚的一部分,這可能會與最終解決方案相關聯。企業希望能夠在應用程序內獨立發佈新功能,而不是一次釋放整個應用程序。由於每一個功能都將由不同的團隊擁有/工作,他們希望團隊A能夠發佈他們的新代碼而根本不影響團隊B.如標題所述,他們真的想在前端實現「微服務」架構。 – SpareWalrus

+0

@KTCO雖然我對前端的這種方法有所保留,但我還是希望至少在直接說「不」的時候探索選項。 – SpareWalrus

回答

5

編排:

讓每個團隊構建組件庫(NPM)和那些拉成一個單一的角2的應用程序。這樣,團隊可以開發使用microservices principles,但您可以部署一個SPA monolith,這可以降低複雜性。

大型組件庫應該有多個包和模塊,所以你可以選擇你拉什麼

微服務之間的通信:

如果有必要,組件庫可以在通信的背結束消息總線。

如果組件庫之間需要直接客戶端集成,那麼您需要第三個組件庫,它們依賴於第三個組件庫,其中包含輕量型可注入消息/事件服務。您可以使用RxJS Subjects實施該服務。