【问题标题】:Angular micro frontends approachAngular 微前端方法
【发布时间】:2019-10-03 12:40:32
【问题描述】:

据我所知,使用微前端时有两种流行的情况 -

1) 带有组件的单页(每个都有自己的服务) 2)从仪表板/导航栏访问多个页面(每个部分都有自己的服务)

我已经研究了一段时间,据我所知,案例 1 在使用 Angular 自定义元素时非常简单。

问题是我需要解决案例 2。 按照设计,我有一个仪表板(页面侧面的导航栏),其中包含不同组件入口点(报告、用户等)的路线列表。

我希望这部分成为容器,并且容器导航栏上的每条路由都通向一个独立的微前端,该微前端可以独立存在并作为容器的一部分。 因此,当我构建完整站点时,我将拥有例如 reportService、userService 等......以及主/容器服务。

我无法确定实现该目标的最佳方法是什么,我看过各种各样的文章,但我仍然看不到一条清晰的道路(准备好产品等...)

是否有任何流行且可用于生产的方法?

编辑:这个想法是例如 - 能够让两个团队各自在网站的单独部分(单独的上下文)上工作,而不会相互影响。两者都有站点的独立部分,并且在部署时可以将更改添加到主包含站点。这两个子站点之间的连接很少(如果有的话),它们可以单独运行,也可以在容器内运行。

我添加了一篇文章的链接,该文章解释了我的问题等等,而且做得比我做得更好 https://martinfowler.com/articles/micro-frontends.html

【问题讨论】:

  • 我不想听起来刻薄,但您似乎在使用您并不真正了解的单词,这会导致句子非常模糊......在 Angular 中,每页SPA 有自己的组件,它们通常是路由的,服务只是包含所有业务逻辑的类。我不知道“使用微前端时的两种流行情况”,将微方面扩展到前端可能不是一个好主意(因为 Angular 已经在内部这样做了)。
  • 我明白,我确实对项目本身进行了分离..分离的模块和其他标准方法用于分离 Angular 项目中的组件和逻辑。但我正在测试一个将其移出到自己的项目中的选项。在客户端执行此操作也有一些非常好的好处。
  • 所以您正在从微服务架构(如 API)迁移到单体架构,而不是相反?
  • 我看过您的其他评论(关于答案):您不必担心 Angular 中的冲突,每个模块都与其兄弟模块分开。正如我所说,与 API 不同,这一切都是在幕后完成的。如果我能给你一个强硬的建议,那就是不要将后端原则应用于项目的前端。他们分开是有原因的,在尝试这样的事情时,你会比结果更头疼。
  • 在选择这种方法时,服务器端或客户端确实更复杂。但这似乎是一切都转移到的地方,更小的组件、更小的单元、更多的分离等等......我想在一个新项目上测试它。因为无论 Angular 框架处理得多么好,我都看到了拥有客户端单体应用的许多负面影响。

标签: angular micro-frontend


【解决方案1】:

我在我的项目中采用了这种方法,希望对你有帮助

可从仪表板/导航栏访问多个页面(每个部分都有自己的服务)

我们基于 UserModule、ReportsModule、InitialModule 等功能创建了多个模块,以便我们可以根据路由懒加载不同的模块。

每个模块都有自己的模块所需的服务、组件、类和资产。例如 InitialModule 将只有 Login 和 Dashboard 相关的组件,我们在main.ts 中将其设置为bootstrap 模块,以便通过下载这两个所需的 js、CSS 和 HTML 来快速加载页面仅组件而不是所有资产

【讨论】:

  • 但还是一个项目?我正在尝试测试一种将这些“模块”实际分离到他们自己的项目中的方法,这些项目可以在没有容器的情况下独立运行。每个团队都可以在自己的模块上工作,而不必担心冲突或影响项目上下文之外的任何内容
  • 是的,它是一个单独的项目,要使用模块制作单独的项目,首先我们需要准备公共/共享模块,然后将它们导入所有项目中
  • 我们实际上使用了类似的方法,但我现在渴望将来在新项目上完全分离
【解决方案2】:

现在我正在开发一个与您所要求的类似的项目。我目前的方法是使用库single-spa 来组织和导入不同的微前端。我目前有一个导航栏,它是一个始终显示的角度应用程序,并使用角度路由在导航下方加载的其他应用程序之间进行更改。你可以开始here

【讨论】:

    猜你喜欢
    • 2020-03-21
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多