是否可以在运行时以角度4加载外部模块?

时间:2017-04-05 18:04:53

标签: angular module

背景

所涉及的Web应用程序包含一个主要部分(一种框架),它是所有用户的标准和一些模块,其中一些是标准的,但其中一定数量是特定于用户的。

简单描述主要标准程序执行标准事务,如通信和会话逻辑,加载用户特定的UI(布局,图形)模块,这些模块又使用一组模块(如按钮,表等)所有用户的标准。用户专用模块具有通用接口和功能,仅在布局和使用的一些标准模块(一到十个,通常是不同的模块)上有所不同。用户特定模块的数量因用户而异(同样,一到十个)。

我们已经有了一个像这样的解决方案实现了一个库的组合(jQuery,Require.js和Knockout.js是主要的),我们很难与Angular提出类似的功能。回答说这是不可能的,为什么有效(如果不合适)。

问题

我宁愿用户特定的模块不属于项目的一部分,原因有很多:

  • 标准模块由不同的团队维护,而不是用户特定的团队,并且具有高度独立的开发周期。
  • 有很多用户,每个用户都有特定的模块,这使得在一个项目中管理标准模块和用户特定模块变得不切实际。
  • 标准和用户特定模块应彼此独立升级。
  • 用户特定模块至少部分生成或搭建。

所需解决方案

主程序加载两组数据 - 可用的用户专用模块列表,这是一个配置,用于定义哪个模块应该用于哪个占位符元素。

加载用户专用模块(通过某些工厂,路由器,任何解决方案),并尽可能像普通模块一样使用,共享一个通用接口。重要的是,他们可以使用标准项目中的其他标准模块。

1 个答案:

答案 0 :(得分:1)

这听起来像依赖注入问题。 为什么不提前声明所有模块,只使用您注入的模块。 意思是,如果不想要/不需要它们,你可以设置模拟/空模块,并用你需要它们的真实模块替换它们。 这是依赖注入的美丽。