2016-10-06 34 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实施该服务。