微前端正在彻底改变我们构建和扩展前端的方式。通过将单体式前端拆分成更小且更易管理的部分,团队可以独立开发、部署和更新各自的前端组件,这提高了可扩展性和灵活性。
随着企业应用变得越来越复杂,采用“micro frontends”(微前端架构)对于保持灵活性和加快开发速度至关重要。
在这份指南中,我们将探讨在2024年成功实施微前端所需的关键条件。我们还将深入探讨如何利用Bit和Webpack Module Federation满足这些条件,并在大型组织中扩展微前端架构的规模。
本指南将引导您搭建组织中模块化、可扩展且高性能的微前端架构,并涵盖多个应用间的协作与更新,包括但不限于这些内容。
在观看这段编码演示之前,随意先看一下。
试试看这个教程 ✍️:
微前端架构:一步一步实践教程 使用模块联邦和 Bit 构建可扩展的微前端解决方案blog.bitsrc.io咱们开始吧,欢迎大家在下方分享您的想法和建议 ✏️
微前端架构的重要要求要在企业环境中成功部署微前端,需要满足几个关键要求。让我们看看每个要求,并看看 Bit 是如何应对这些要求的。
1. 解耦开发(即开发过程相互独立)在微前端架构中,解耦的开发允许每个微前端独立开发、部署和维护。每个微前端代表一个独立的功能特性,可以各自使用自己的技术栈、发布计划和工作流程。这种独立性减少了团队之间的依赖,促进了更快速的创新和迭代。
在大型企业中,前端往往变得庞大和复杂,难以管理,其中的更改可能会影响整个系统,减慢开发进度并增加风险。通过解耦开发,可以将前端分解为更易管理的部分,让团队能够更好地独立开发和测试各自的组件。
- 更快地创新:选择最适合的工具和框架,以加速开发过程。
- 降低风险:将变更隔离,以最小化对整个应用的影响。
- 高效扩展:独立扩展每个微前端,以支持自然增长。
Bit 提供了一个企业级的平台,用于实现微前端的解耦开发。下面来看看 Bit 是如何促进这一过程的:
- 它使开发人员能够将前端功能封装为独立开发和版本化管理的组件。这种隔离使得团队可以更新并发布新版本而不干扰应用程序的其他部分。例如,一个团队可以更新基于 React 的微前端,而另一个团队可以同时处理 Angular 组件,两者可以独立进行管理。
更多:
创建组件 | Bit 组件是一个可重复使用的、独立源代码管理的模块,存储在范围中并在 bit.dev 平台上维护- 示例: 可以在 Bit 的环境中独立开发一个用于用户资料页面的 React 组件。该组件可以独立于应用程序的其他部分进行版本控制、测试和部署,确保该组件的任何更新都不会影响其他微前端(微前端是指将前端应用拆分成多个独立的小应用,每个小应用都可以独立开发、测试和部署)。
2. 自定义开发环境配置: Bit 支持根据不同技术栈自定义开发环境。
不仅可以使用在同一个单代码库中,还可以在多个代码库中重用环境配置。
团队可以为 React、Angular、Vue.js 或任何其他框架设置特定的环境。这些环境配备了所有必要的工具,如代码检查工具、编译器和测试框架,确保每个微前端都在一致的环境中开发。了解更多:
React — 搭建你的开发环境 | bit.dev- 示例: 一个团队可能会使用 Bit 来设置一个自定义的 React 开发环境,使用 ESLint 和 Jest 进行测试,而另一个团队则设置一个使用 Karma 进行单元测试的 Angular 环境。这些环境确保了在每个微前端的上下文中,开发、测试和构建流程都得到了标准化和优化。
4. 隔离构建的胶囊: Bit 的胶囊技术允许组件在完全与代码库其余部分隔离的情况下进行构建。这种隔离确保构建被执行,并且所有依赖项都得到正确管理,从而避免全局作用域问题,并使早期发现和修复错误更加容易。胶囊为开发者提供了一个可靠的开发和测试环境,以便在部署前使用。
第二 版本管理与依赖管理版本控制和版本管理和控制是微前端架构中的关键部分。在微前端架构中,每个前端模块或组件都是独立开发、版本控制和维护的。
这意味着每个模块都可以以自己的速度发展,拥有特定依赖和版本控制。
对每个微前端的版本控制确保其更新不会无意中影响应用程序的其他部分,而有效的依赖管理则防止冲突并确保每个模块都能按预期运行。
在大型应用中,随着更多微前端的引入,管理和控制依赖项及其版本变得越来越复杂。
没有一个强大的系统,这样的情况依赖冲突很容易出现,会导致诸如重复的库、版本不一致,甚至可能导致应用程序崩溃等问题。正确的版本控制和依赖管理确保以下几点:
- 稳定性保持不变:更新一个微前端不会影响其他微前端,保持应用程序的整体稳定性。
- 依赖项保持一致:每个微前端使用正确的共享库版本,避免冲突和重复。
- 部署灵活性:团队可以灵活更新或回退特定的微前端,而不影响整个应用程序,从而实现更灵活和快速响应的部署策略。
Bit 提供了适用于这种微前端架构的全面解决方案,这里介绍它如何支持这些过程。
独立版本Bit 允许每个组件或微前端独立版本(使用语义版本规则)。这样团队就可以自由组合和使用组件,更新或回滚特定组件,而不影响其他组件的运作,从而实现微前端的逐步更新和发布。
无版本控制的微前端和 Bit 的结合
此外,你不仅可以比较不同版本组件的代码,还能比较预览图、文档、测试、依赖项等等。
按微前端模块进行版本管理;实现自动化依赖管理和更新
每个组件的变更都会被Bit追踪和管理,从而提供清晰的版本和变更历史。给组件打标签即为其分配一个版本号。当你升级版本时,Bit会提示你是否需要同步升级其他相关组件。
自动定义和管理依赖项 | .bit.dev 组件依赖管理策略- 示例: 一个团队可能更新登录模块以提高安全性。通过 Bit,他们可以在发布新版本组件的同时,让应用程序的其他部分继续使用旧版本。如果遇到问题,可以轻松回退到之前的版本,不影响系统其他部分。
这才是Bit真正展现其颠覆性的地方。
Bit 自动识别和管理每个组件的依赖关系。当创建或更新组件时,Bit 会解决并安装所有必要的依赖,确保每个微前端组件都拥有正常运行所需的所有内容。
为每个组件提供自动依赖管理
此过程有助于防止依赖冲突或缺少库等问题,这些问题常见于单仓库、微前端和共享组件的复杂应用中。在单仓库、微前端和共享组件的复杂应用中,这里有一个由 PNPM 的作者制作的视频演示(点击观看)[https://www.youtube.com/watch?v=vpVIw5QTlps]。
- 示例: 比如,假设一个微前端依赖于特定版本的库,比如
lodash
。Bit 会确保安装正确的版本,并且使用不同版本lodash
的其他微前端不会影响它。这种隔离能防止冲突,确保每个微前端都能稳定运行且功能正常。
- 共享依赖: Bit 还自动管理跨微前端的共享依赖。当多个微前端使用同一个库或组件时,Bit 自动管理这些共享依赖,以避免重复并减小包的大小。共享依赖在整个应用中保持一致和独立,同时允许每个微前端独立更新。
- 示例: 多个微前端可以将设计系统或工具库作为 Bit 组件共享。这个共享组件在中央仓库中进行版本管理和维护工作,使团队可以轻松拉取最新版本或回退到之前的版本。
Bit 与 CI/CD 管道无缝集成,自动对组件进行测试、构建和部署,每当组件更新时。这种集成确保每个组件版本在上线前都经过彻底测试,从而降低在生产环境中引入错误或破坏性更改的可能性。
你甚至可以自动化 GitHub 仓库的 PR 更新:
- 示例: 当一个新的微前端版本推送到了 Bit 时,CI/CD 管道会自动触发测试,构建该组件,并准备进行部署。如果所有检查都通过了,新版本会被标记后发布;否则部署将被暂停,从而避免影响到用户的潜在问题。
在运行时和构建时集成之间作出的选择会影响微前端架构的灵活性和可扩展性。运行时集成允许动态组合与更新,而构建时集成则涉及将所有内容编译成一个单一的包,却可能限制灵活性,但提供高性能和良好的开发者体验。
因为每个组件都是一个独立的包或模块,有自己的版本,这样就可以单独更新这些具体的组件以及它们相关的依赖,而无需更新项目的其余部分。
Bit 支持这两种集成,并让你可以根据需要选择适合的集成。它与 Module-Federation 兼容,可以与所有包管理器和注册表无缝协作。
例如,这里有几个使用 Module-Federation 集成和更新 Bit 组件的演示。
让我们看看他们如何在该环境下利用模块联邦技术进行部署。
同时,每个导出到bit.cloud的组件已经是打包好了的——当你标记并导出组件时,这个过程会自动进行。这意味着你可以通过任何包管理器或注册表(如JFrog Artifactory)来安装它。你可以在每个组件页面的“使用”标签下找到相关选项。
微前端架构应该能够各自独立部署,使得应用程序的不同部分可以按自己的节奏演化和发展,无需与其他组件同步更新。
Bit 的模块化架构允许每个组件或微前端可以独立部署。Bit 无缝集成了 Webpack 模块联邦,使组件可以按需加载。这将部署过程与应用程序的其他部分解耦,从而实现快速且自主的部署。
6. 通过中央平台共享微前端架构Bit.cloud 是一个用于共享组件(如微前端)的中央平台。它提供云托管、私有云以及本地服务器版本。Bit cloud 是一个端到端的组件驱动开发平台,能够实现组件的创建、共享、发现、消费、更改和更新的流畅和完整流程。这对于组织环境中成功采用微前端至关重要的一部分,并且可以与您的工具和工作流集成和连接,如 GitHub 或 Artifactory,甚至 Figma 和 CI/CD 工具。
您的微前端可以托管在您的个人账户里,也可以托管在您的组织账户中,并且可以被拆分成不同的“范围”,每个“范围”作为一组具有共同主题的组件。
不妨看看:
Bit. 可组合的软件平台。一个专为创新团队打造的完整开发平台,用于构建可组合的软件产品。bit.cloud 6.2 微前端发现Bit Cloud 提供了一个强大的平台,用于发现共享的前端微组件,使团队能够轻松找到并选择最适合他们项目组件。它提供了高级搜索功能,允许用户根据标签、依赖项和版本等标准筛选组件。这有助于开发人员迅速找到所需的特定组件。
除了提供搜索功能之外,Bit Cloud 还增强了组件发现的过程,通过 视觉示例 和 自动生成的文档。每个组件页面都详细记录了文档,包括使用说明、依赖关系图,以及展示组件在不同状态和场景中的视觉组合。这些组合模拟了组件在不同情况下的行为,帮助开发人员和非技术人员(如设计师)更好地理解组件的工作原理以及如何将其集成到不同的项目中。
6.3 分析状态、使用和采用的情况共享微前端和其他组件在扩展开发中的一个重要方面是能够追踪它们的使用和采用情况、技术栈的状态以及其它有助于管理和治理这些组件的重要指标。
在 Bit.Cloud 上,你可以查看每个组件(或 Scope)的直接和间接依赖项、被依赖项、不同项目中的使用情况、版本更新情况和所用技术等。
有效的微前端架构设计需要跨团队合作,同时也需要在跨职能团队内部协作。开发人员需要能够无缝协作,即使在开发应用程序的不同部分时,也能够在整个过程中一起规划、审查和发布。
Bit 设计得很方便大家合作。
例如,可以通过“变更请求”来提议组件的新版本,审查团队的成员可以在变更请求界面查看这些更改,包括代码、视觉预览、测试、依赖项以及其他相关信息。他们可以直接在变更请求界面中讨论并批准这些更改。
此外,组件可以轻松导入到您的本地工作区进行编辑和更改,这使得在组件上进行协作、提出修改、提交更新和保持一致变得非常容易。
这种协作环境加速了开发,并确保所有团队目标一致,技术标准统一,且用户界面体验保持一致。
8. 自治团队各团队拥有并实现基于领域的微前端
在不同微前端工作的各个团队应当各自独立运作,各自领域有完全的控制权。这种自主性对促进创新很有帮助,以及减少开发中的瓶颈。
Bit的平台支持自主团队,提供他们所需的工具,让团队能够独立完成组件的开发、测试和部署。每个团队可以管理自己的工作流程,从开发到部署,无需与其他团队协调。这种自主性得到了增强,因为Bit支持独立的版本管理、部署和运行时整合,使团队能够快速行动,并自由创新。
第9点第九种技术组合
在不同的团队喜欢使用不同技术栈的组织中,微前端特别强大。这种灵活性允许每个团队为他们正在开发的特定功能选择最佳工具和框架。例如,一个团队可能使用React来开发用户仪表板,另一个团队可能选择Angular来处理复杂的表单,另一个团队则可能利用Vue.js来开发轻量级、快速加载的组件,比如导航栏。
多个组件,多种技术,统一平台
Bit(位)在通过其组件环境(Component Environments)管理这些多样的技术栈方面发挥着关键作用。Bit环境是扩展插件,用于配置和管理特定于每个框架或技术栈的开发工具和工作流。在使用Bit管理的工作区时,团队可以为React、Angular、Vue.js或任何其他正在使用的技术栈(例如)创建自定义环境。这些环境确保每个组件都能在一致且隔离的环境中开发,无论底层技术为何。
例如,在 Bit 中的 React 组件环境可能包含 ESLint 、 Jest 和 Webpack 的配置,而 Angular 环境则可能设置 TypeScript 、 Karma 和 Angular CLI 。这使得每个团队可以专心开发,不必担心跨栈问题,因为 Bit 负责整合,并确保每个组件在集成到更大应用时是兼容的。
另外,Bit 环境还支持 Capsules ,这些 Capsules 可以为单个组件创建隔离的开发环境。这意味着每个组件都可以完全隔离地进行开发、测试和构建,与其他代码完全隔离,从而尽早发现并解决依赖冲突和全局状态泄漏等问题。
10. 应用壳App Shell是一个静态框架,主要功能是提供网页应用的核心结构,包括如头部和导航栏之类的共享UI元素。在微前端架构中,App Shell 保证用户界面的一致性,并动态加载微前端模块。
应用程序的外壳提供了一个稳定的底座,负责路由管理以及状态管理,而微前端则独立加载。这种分离方式让每个微前端可以在不影响整个应用程序的情况下独立开发和部署各自的功能。
- 独立开发能力:Bit 可以让你单独开发 app 壳和微前端,可以独立开发、版本管理和部署。
- 动态集成:利用 Webpack 的模块联邦(Module Federation),Bit 允许微前端在运行时动态加载到 app 壳中,确保无缝地集成。
- 集中管理和存储:Bit Cloud 集中管理和存储 app 壳和微前端,方便组织内部发现、更新和共享这些组件。
本质上,Bit 支持应用壳和微前端应用的无缝集成和独立管理,确保复杂 web 应用程序中的一致性和灵活性得以保障。下面举个例子:
React 微前端应用壳:掌握微前端集成技巧,实现一致的用户体验,优化性能 | blog.bitsrc.io 结论.微前端架构是一种强大的架构方法,用于管理现代企业应用程序的复杂性。通过满足解耦开发、独立版本控制、逐步更新迭代、独立部署、运行时整合、共享组件、协作开发和自治团队的关键需求,组织可以实现高度模块化和可扩展的前端架构。Bit 和 Webpack 模块联邦工具提供了一套强大的工具来支持这些目标,使团队能够更快地创新,并在快速变化的数字世界中提供出色的用户体验。
共同学习,写下你的评论
评论加载中...
作者其他优质文章