Angular 2的前端“微服务”

时间:2016-10-06 19:26:44

标签: javascript angular

我正在寻找一个有点奇怪情况的解决方案。让我们快速浏览angular2-seed项目,以便更好地解释:https://github.com/mgechev/angular2-seed/tree/master/src/client/app

在该项目中,我们有3个独立的模块 - about,home,shared。我正在寻找的是一种隔离这些发展的方法,因此我们最终能够独立发布每一部分。例如,假设A队正在研究关于部分,而B队正在家中工作。每个工作都已完成,我们已准备好发布,但是我们发现about部分缺少一个关键功能,但我们仍然希望将更改发布到主页部分。我们正在寻找的是实现这一目标的方法。

以下是一些已经探索过的解决方案,但我对此并不满意:

  • 家庭/约有完全不同的应用程序(在我看来,这消除了SPA的许多好处)。
  • 让每个模块(about,home,shared)汇总到它自己的NPM包中。当我们去部署时,我们可以通过某种方式协调拉出这些模块的所有已发布的NPM包。

2 个答案:

答案 0 :(得分:8)

<强>配器:

让每个团队构建一个组件库(NPM)并将它们放入一个Angular 2应用程序中。这样,团队可以使用microservices principles进行开发,但您可以部署SPA monolith ,从而降低复杂性。

大型组件库应该有多个软件包和模块,因此您可以选择引入的内容。

微服务之间的沟通:

如有必要,组件库可以通过后端消息总线进行通信。

如果组件库之间需要直接客户端集成,那么您需要abouthome所依赖的第3个组件库,其中包含轻量级可注入消息/事件服务。您可以使用RxJS Subjects实现该服务。

答案 1 :(得分:0)

javascript元框架可以为您服务。 这有趣project 它通过将生命周期应用于整个应用程序来从React组件生命周期中获取灵感。

部分功能:

  • 在同一页面上使用多个框架而不刷新页面 (React,AngularJS,Angular,Ember,或任何你正在使用的)
  • 使用新框架编写代码,而无需重写现有应用
  • 延迟加载代码,以改善初始加载时间。

我希望它能帮助你朝着正确的方向前进。