我的团队开发了一个 Angular 5 应用程序,该应用程序已经投入生产了一段时间,但我们最近的任务是让该应用程序在公司拥有的其他 3 个站点上运行。一个站点是使用 Angular6 构建的 SPA,另一个也是 SPA,但使用 Angular5,而另一个使用一些较旧的库,例如 jQuery。
管理层希望我们立即与 Angular5 SPA 集成,因此我们只是将整个应用程序导出为带有子路由的模块,并让其他应用程序进行引导。
但恐怕上述方法不适用于非角度网站。这也使两个应用程序紧密耦合,因为“主机”应用程序需要了解我们的应用程序的所有依赖项,这不是一个微不足道的应用程序(我会说是相当大)并安装它们,当两个应用程序需要不同版本的应用程序时,这会导致问题相同的依赖项,更不用说在升级依赖项或框架本身时我们需要同步。我认为将应用程序嵌入更多站点时,这种方法不会扩展。
对于更通用的实现,我的第一个想法是将我们的应用程序升级到 Angular 6 并创建一个带有自定义元素的 Web 组件,但是我们需要支持不支持原生封装的 IE11 和 Edge,因此我们需要在每个使用它的站点,以确保它们不会破坏我们的样式,我也不知道 Web 组件是否可以管理子路由。
另一个想法是使用 iframe,但我的问题是 iframe 调整大小以适应内容以及如何从 iframe 内的“驻留”应用程序在“主机”应用程序中添加子路由。
有没有更好的方法来实现我们需要做的事情?
理想的解决方案应该允许我们的应用程序在多个站点中使用(每个站点都提供特定的配置),而我们不必知道使用我们的应用程序的站点。
谢谢你的帮助。