微服务
- 维基上的定义:一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,将应用程序构造为一组松散耦合的服务,并通过轻量级的通信协议组织起来
- 简单来说:将一个单体应用,按照一定的规则拆分为一组服务。这些服务可以有自己仓库,独立开发、部署,有独立边界,由不同团队管理,不同语言编写,对于前端来说仍是一个完整的服务。
- 微服务主要解决:庞大的一整块后端服务带来的变更和扩展的限制
微前端是什么?
- 微前端是将微服务概念扩展到前端世界
- 微前端的想法是:将网站或Web应用程序视为由独立团队拥有的功能的组合。每个团队都有一个独特的业务或任务领域,它关心并专注于此。团队是跨职能的,从数据库到用户界面端到开发其功能
微前端的核心理念:
- 1、与技术无关:每个团队都可以选择和升级他们技术栈,不需要和其他团队协调;自定义元素是隐藏细节地好办法,为他人提供中立地界面
- 2、隔离团队代码:不共享运行。构建独立应用,不依赖共享状态或共享变量;
- 3、建立团队前缀;
- 4、支持本机浏览器功能而不是自定义API:使用浏览器事件进行通信
- 5、构建弹性站点
微前端带来了什么
- 1、 简单、分离、松耦合的代码仓库:各个仓库的代码可以基于业务、权限、变更的频率、组织结构、后端微服务等原则拆分,界限明确,降低耦合
- 2、独立开发、独立部署:各个项目有自己交付流水线(从构建、测试到上线),并且能够独立部署,不需要考虑其他项目的情况
- 3、技术栈无关:可以使用不同技术栈的子应用聚拢起来
- 4、遗留系统迁移:可以将老项目且已经稳定的通过微前端方案直接整合到新的应用中
- 5、技术栈升级:技术栈版本升级方面,eg:项目成立之初使用当前最新技术antd2,后期技术发展到antd4。针对这种情况可以重启一个应用,使用antd4重构应用,然后使用微前端方案将新旧应用聚合在一起
- 6、 团队技术成长:与技术栈无关,可以使团队在后期开发中使用新的技术
使用微前端的挑战
- 子应用的切换
- 应用相互隔离,互不干扰
- 子应用之间通信
- 多个子应用的并存
- 用户状态的存储-免登
微前端常用的技术方案(截止目前常用的微前端实现方案)
- 路由分发式微前端
- iframe
- single-spa
- qiankun
- webpack5:module federation
- Web Component
后续继续输出微前端的配置与应用 ~
版权声明:本文为qq_45829293原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。