微前端简介:
微前端是一种前端架构设计方法,将前端应用程序拆分为独立的、半独立的“微应用”模块,它们在一定程度上松散地协同工作。微前端的概念最早出现在2016年的ThoughtWorks技术雷达报告中,将微服务的概念扩展到前端世界。微前端的核心思想是将前端应用程序分解为独立交付的前端应用,然后将它们组合成一个更大的整体。每个微前端可以由不同的团队管理,并且可以使用不同的框架来实现。这种方法使得团队可以独立开发、测试和部署各自的前端应用,同时向用户呈现为一个统一的产品。微前端的优势包括代码库更小、更具连贯性和可维护性,组织更具扩展性,能够逐步升级、更新或重写前端的各个部分,以及更灵活地进行增量升级等。
微前端的核心理念包括组件化、独立开发和部署、技术多样性和团队自治。每个微前端都有自己的git存储库、package.json文件和构建工具配置,因此每个微前端都有独立的构建过程和独立的部署/持续集成。这意味着每个存储库的构建时间较短。微前端与微服务类似,都强调独立的构建和部署。微前端之间的通信通常通过DOM作为共享资源进行,一个微前端的DOM不应该被另一个微前端触碰,类似于一个后端微服务的数据库不应该被除了拥有/控制它的微服务之外的任何微服务触碰。
在微前端中,可以使用不同类型的微前端,包括single-spa应用程序、single-spa包和实用模块。这些微前端可以使用React、Vue、Angular等框架来渲染其组件。微前端的性能通常比其来源于的单体应用更高,这归功于内置的懒加载和其他与性能相关的最佳实践。此外,微前端还提供了一个迁移路径,可以暴露和解决单体应用中存在的问题。一个重要的性能考虑是共享大型库(如React、Vue或Angular)的单个实例,这是非常鼓励的。
微前端之 5 个核心思想
前端工程化也面临着后端同样的问题,一个工程随着时间流逝会逐渐堆叠大量业务,从而让一个前端项目慢慢演变成一个巨石应用,基于此背景下在micro-frontends上对微前端做了如下阐述:
微前端背后的想法是将网站或 Web 应用程序视为由独立团队拥有 的 功能的组合。每个团队都有不同的业务领域或任务,它关心和专注于,一个团队是跨职能的,从数据库到用户界面,端到端地开发其功能,但这个想法并不新鲜,它与自包含系统的概念有很多共同之处。在过去,这种方法被称为垂直系统的前端集成。但微前端显然是一个更友好、更简洁的术语。
并进一步提炼出以下 5 点微前端的核心思想
与技术无关
每个团队都应该能够选择和升级他们的堆栈,而无需与其他团队协调。自定义元素是隐藏实现细节同时为其他人提供中性界面的好方法。隔离团队代码
不要共享运行时,即使所有团队都使用相同的框架。构建自包含的独立应用程序。不要依赖共享状态或全局变量。建立团队前缀
就尚无法隔离的命名约定达成一致。命名空间 CSS 、事件、本地存储和 Cookie ,以避免冲突并明确所有权。优先使用本机浏览器功能而不是自定义 API
使用浏览器事件进行通信,而不是构建全局 PubSub 系统。如果你真的需要构建一个跨团队的 API ,尽量让它尽可能简单。构建弹性站点
即使 JavaScript 失败或尚未执行,您的功能也应该很有用。使用通用渲染和渐进增强来提高感知性能。
常用微前端框架:
umijs/qiankun: Blazing fast, simple and complete solution for micro frontends.
micro-zoe/micro-app: A simple, efficient and powerful micro front-end framework. 一款简约、高效、功能强大的微前端框架
微前端框架学习实践:
参考: