从外部内容加载动态组件

时间:2016-04-22 11:31:26

标签: angular distributed microservices angular2-template

我正在研究的系统包含许多分布式微服务,每个组件的潜在多个版本可能同时处于活动状态。

我试图构建的Angular2应用程序应该能够通过websockets与这些组件中的每一个进行交互。因为为每个组件的所有未来版本和功能,相应的协议实现甚至新组件准备此应用程序似乎是不可行的,所以我想将此责任推给组件本身。

每个组件都能够通过在同一个websocket连接上发送的包传递其功能(以NG2组件的形式)以及协议实现和必要的GUI元素(HTML / CSS)。

是否有一种模式可以在ng2中实现这种“按需加载”组件及其模板?

3 个答案:

答案 0 :(得分:2)

看起来你可以尝试使用路由器延迟加载并提供<a href="http://hijacker.com/pwned">example.com<\a>的自定义实现,它可以通过websocket加载组件。

答案 1 :(得分:1)

我不太确定我是否完全理解你的问题。

  

是否有一种模式可以在ng2中实现这种“按需加载”组件及其模板?

使用延迟加载的模块,按需加载模块,请参阅:https://angular.io/docs/ts/latest/guide/ngmodule.html#!#lazy-load 我强烈建议阅读整本指南,这真的很有帮助。

  

但他们应该能够共享服务和图书馆。

Angulars指南建议共享模块和核心模块。实际上我认为这是最好的方法。只需在上面的链接上向下滚动。

  

每个组件都能够通过在同一个websocket连接上发送的包传递其功能(以NG2组件的形式)以及协议实现和必要的GUI元素(HTML / CSS)。

这是我不确定的部分,就像我不知道我是否理解你的意思。您不想通过websocket连接加载组件吗?如果是这样,为什么呢? 如果你的意思是只使用相同websocket的每个组件进行通信:我建议一个服务,这将是核心模块的一部分,因此是一个单身人士。然后,组件可以访问此服务,因此它们始终连接到同一个websocket。

答案 2 :(得分:0)

以下是可以实现的步骤。

  • 使用systemjs loader来加载路由器中的组件``
  • systemqs配置文件中的
  • 提供组件的路径

这些 examples解释更详细。