【发布时间】:2020-07-27 16:35:13
【问题描述】:
我需要根据以下原则创建一个模块化应用程序:
- 应用程序的核心:在应用程序中随处可用的一组服务/组件(应用程序的核心)。例如,它将包含用户标识、记录事件的能力、SASS 的全局设计、文件管理器、打印管理器......所有必需的元素都将在核心中开发。
- 一些可选插件可以添加到该核心。例如,这将为核心应用程序带来一些新功能或使通用核心适应特定用例。插件必须使用核心的元素(例如插件日志事件与核心的日志管理器)。
- 核心首先执行并在启动时加载现有插件。
- 核心是单独设计、开发和编译的,没有任何插件。
- 每个插件都是单独设计、开发和编译的,但可以使用核心应用程序的一些服务/组件。
- 我可以根据用户需要安装或删除插件。
据我目前的了解,我注意到 Angular2+ 可以实现这样的概念:
- 在同一模块的其他组件内的组件和插件中创建核心(angular2+ 基本用例):没有投诉
- 在模块中创建核心并在不同模块中创建插件:没有抱怨,因为我仍然需要将所有内容编译在一起,结果构建在全局 js 文件中。
- 创建多个嵌套在一起的 Angular 应用(基于该解决方案:Is it possible to nest Angular2 applications),但似乎该解决方案并未真正受到控制。
我真的没有其他想法,有人有建议吗?
【问题讨论】:
-
我认为这就是 modules 和 lazy loading 的用途。你看了吗?
-
I'm not sure that Angular 2+ can fullfill such concept:可以。其实任何JS框架都可以。决定性因素是你如何编码,而不是你使用什么。只需read the documentation 即可查看您是否喜欢 Angular,如果不喜欢,请不要使用它。 -
回答您的三个对立点:Angular 可以管理插件和核心模块。只需为每个插件创建一个模块就可以了。您可以推迟某些脚本的加载,直到您到达特定的 URL,这样您就可以将插件与 dist 包分开。而且您不需要创建单独的应用程序。
-
@peter :我感觉您将我的问题理解为对 angular2 的批评。我的问题显然不是批评,因为我已经基于该框架开发了一个 Web 应用程序,我真的很喜欢它。问题是我暂时不知道如何实现我的需求。
-
“我可以根据用户需要安装或删除插件。”是什么意思?特别是,您所说的“install”是什么意思?在这种情况下,什么是插件?你在问什么并不完全清楚。据我了解,除非我在这里理解错误,否则您应该能够使用 Angulars 模块功能并实现您想要的。
标签: angular