从外部内容加载动态组件
Dynamic component loading from external content
我正在处理的系统由许多分布式微服务组成,每个组件可能有多个版本同时处于活动状态。
我尝试构建的 Angular2 应用程序应该能够通过 websockets 与这些组件中的每一个进行交互。因为为每个组件的所有未来版本和特性、各自的协议实现甚至新组件准备这个应用程序似乎是不可行的,我想把这个责任推给组件本身。
每个组件都能够通过在同一个 websocket 连接上发送的包来传达其功能(以 NG2 组件的形式)以及协议实现和必要的 GUI 元素(HTML/CSS) .
在 ng2 中是否有启用这种 'on-demand-loading' 组件及其模板的模式?
看来您可以尝试使用路由器延迟加载并提供 NgModuleFactoryLoader
的自定义实现,它可以通过 websocket 加载组件。
我不太确定我是否完全理解你的问题。
Is there a pattern that enables this kind of 'on-demand-loading' of components and their templates in ng2?
好吧,有模块的按需加载,使用延迟加载模块,参见:https://angular.io/docs/ts/latest/guide/ngmodule.html#!#lazy-load
我强烈建议阅读整篇指南,它真的很有帮助。
but they should be able to share services and libraries.
Angulars 指南为此建议了一个共享模块和一个核心模块。实际上,我认为这确实是最好的方法。只需向下滚动上方的 link。
Each component is able to communicate its capabilities (in the form of a NG2 component) as well as the protocol implementation and the necessary GUI elements (HTML/CSS) via a package sent over the very same websocket connection.
这是我不确定的部分,就像我不知道我是否正确理解你的意思一样。你不想通过 websocket 连接加载组件吧?如果是这样,那为什么呢?
如果您的意思是仅针对具有相同 websocket 的每个组件进行通信:我建议这样做的服务,它将成为核心模块的一部分,因此是一个单例。然后组件可以访问此服务,因此它们始终连接到同一个 websocket。
下面是可以实现的步骤
- 使用 systemjs 加载程序加载路由器中的组件``
- 在您的 systemjs 配置文件中提供组件的路径
这些 examples解释得更详细。
我正在处理的系统由许多分布式微服务组成,每个组件可能有多个版本同时处于活动状态。
我尝试构建的 Angular2 应用程序应该能够通过 websockets 与这些组件中的每一个进行交互。因为为每个组件的所有未来版本和特性、各自的协议实现甚至新组件准备这个应用程序似乎是不可行的,我想把这个责任推给组件本身。
每个组件都能够通过在同一个 websocket 连接上发送的包来传达其功能(以 NG2 组件的形式)以及协议实现和必要的 GUI 元素(HTML/CSS) .
在 ng2 中是否有启用这种 'on-demand-loading' 组件及其模板的模式?
看来您可以尝试使用路由器延迟加载并提供 NgModuleFactoryLoader
的自定义实现,它可以通过 websocket 加载组件。
我不太确定我是否完全理解你的问题。
Is there a pattern that enables this kind of 'on-demand-loading' of components and their templates in ng2?
好吧,有模块的按需加载,使用延迟加载模块,参见:https://angular.io/docs/ts/latest/guide/ngmodule.html#!#lazy-load 我强烈建议阅读整篇指南,它真的很有帮助。
but they should be able to share services and libraries.
Angulars 指南为此建议了一个共享模块和一个核心模块。实际上,我认为这确实是最好的方法。只需向下滚动上方的 link。
Each component is able to communicate its capabilities (in the form of a NG2 component) as well as the protocol implementation and the necessary GUI elements (HTML/CSS) via a package sent over the very same websocket connection.
这是我不确定的部分,就像我不知道我是否正确理解你的意思一样。你不想通过 websocket 连接加载组件吧?如果是这样,那为什么呢? 如果您的意思是仅针对具有相同 websocket 的每个组件进行通信:我建议这样做的服务,它将成为核心模块的一部分,因此是一个单例。然后组件可以访问此服务,因此它们始终连接到同一个 websocket。
下面是可以实现的步骤
- 使用 systemjs 加载程序加载路由器中的组件``
- 在您的 systemjs 配置文件中提供组件的路径
这些 examples解释得更详细。