【发布时间】:2018-06-03 23:21:42
【问题描述】:
我们希望在一个单页应用程序下呈现多个 Web 应用程序。 我们正在寻找一个可以使用的微前端架构/框架。 正如我们所看到的,这些是我们的实施选项:
- 使用single-spa开源框架:https://github.com/CanopyTax/single-spa
- 使用 Iframes(友好的 Iframes)托管应用程序(shell)并根据当前 url 加载每个应用程序。
- 编写我们自己的 Javascript 框架
- 其他?
当前状态是一个单体 FE 应用程序,它使用其他子应用程序作为内部 3rd 方包。 这种方法对我们来说是不可扩展的,因为托管应用程序将所有产品构建在一起,并没有真正分开。
我们的要求是微前端的一般要求: 1.自主开发—— 每个团队都可以选择自己的框架并构建自己的产品,而不管其他产品。
独立部署 - 每个应用程序都可以在生产中升级,无需停机,也不会干扰其他应用程序。
共享组件 - 我们在我们的应用程序中使用 Angular4,并且我们已经编写了一个专有的 3rd 方库(共享组件和逻辑),应该在所有产品之间共享以实现相似的外观和感觉。
我们希望能够在不关心其他应用程序的情况下升级每个应用程序的框架(Angular、RXjs、Typescript 等以及我们的专有组件库)。
我们尝试使用 single-spa 框架,但遇到了一些问题,目前我们发现自己在思考这是否适合我们,或者我们是否应该尝试不同的方法。
我们在使用单一水疗池时遇到的问题是: 1.资产加载有问题。 (我们必须在托管应用程序的根文件夹中拥有资产文件,并且在切换到另一个应用程序时会遇到资产冲突)。 2.我们仍然不知道如何处理所有应用程序的全局样式(我们使用sass进行样式,并且必须与每个应用程序的本地样式一起编译) 3. 升级 Angular 框架(或所有其他框架)对于一个应用程序是不可能的,要么全有要么全无(因为我们有一个 Angular 实例)。 4. 我们必须在宿主应用程序(shell)的另一端实现不同的捆绑开发。
当我们考虑 Iframe(使用友好的 Iframe)解决方案时,我们设想了所有子应用程序之间的完全分离,并且倾向于认为这对我们来说是一种更合适的方法。
使用 iframe 有什么陷阱吗?
谢谢, 丹尼尔
【问题讨论】:
-
您可以分享您在这一年的研究/经验的结果,以改进这一点:stackoverflow.com/a/52719127/6432698 answer
标签: angular iframe web frontend