[开源]一个微前端架构系统,可能是你见过最完善的微前端解决方案

一飞开源,介绍创意、新奇、有趣、实用的开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

一、开源项目简介

qiankun(乾坤)

可能是你见过最完善的微前端解决方案

qiankun 是一个基于 single-spa 的微前端实现库,旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。

qiankun 孵化自蚂蚁金融科技基于微前端架构的云产品统一接入平台,在经过一批线上应用的充分检验及打磨后,我们将其微前端内核抽取出来并开源,希望能同时帮助社区有类似需求的系统更方便的构建自己的微前端系统,同时也希望通过社区的帮助将 qiankun 打磨的更加成熟完善。

目前 qiankun 已在蚂蚁内部服务了超过 2000+ 线上应用,在易用性及完备性上,绝对是值得信赖的。

二、开源协议

使用MIT开源协议

三、界面展示

四、功能概述

qiankun 的核心设计理念

  • 简单

  • 由于主应用微应用都能做到技术栈无关,qiankun 对于用户而言只是一个类似 jQuery 的库,你需要调用几个 qiankun 的 API 即可完成应用的微前端改造。同时由于 qiankun 的 HTML entry 及沙箱的设计,使得微应用的接入像使用 iframe 一样简单。

  • 解耦/技术栈无关

  • 微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用,而 qiankun 的诸多设计均是秉持这一原则,如 HTML entry、沙箱、应用间通信等。这样才能确保微应用真正具备 独立开发、独立运行 的能力。

特性

  • 基于 single-spa 封装,提供了更加开箱即用的 API。

  • 技术栈无关,任意技术栈的应用均可 使用/接入,不论是 React/Vue/Angular/JQuery 还是其他等框架。

  • HTML Entry 接入方式,让你接入微应用像使用 iframe 一样简单。

  • 样式隔离,确保微应用之间样式互相不干扰。

  • JS 沙箱,确保微应用之间 全局变量/事件 不冲突。

  • ⚡️ 资源预加载,在浏览器空闲时间预加载未打开的微应用资源,加速微应用打开速度。

  • umi 插件,提供了 @umijs/plugin-qiankun 供 umi 应用一键切换成微前端架构系统。

五、技术选型

快速上手

主应用

1. 安装 qiankun

$ yarn add qiankun # 或者 npm i qiankun -S

2. 在主应用中注册微应用

import { registerMicroApps, start } from 'qiankun';
registerMicroApps([ { name: 'react app', // app name registered entry: '//localhost:7100', container: '#yourContainer', activeRule: '/yourActiveRule', }, { name: 'vue app', entry: { scripts: ['//localhost:7100/main.js'] }, container: '#yourContainer2', activeRule: '/yourActiveRule2', },]);
start();

当微应用信息注册完之后,一旦浏览器的 url 发生变化,便会自动触发 qiankun 的匹配逻辑,所有 activeRule 规则匹配上的微应用就会被插入到指定的 container 中,同时依次调用微应用暴露出的生命周期钩子。

如果微应用不是直接跟路由关联的时候,你也可以选择手动加载微应用的方式:

import { loadMicroApp } from 'qiankun';
loadMicroApp({ name: 'app', entry: '//localhost:7100', container: '#yourContainer',});

微应用

微应用不需要额外安装任何其他依赖即可接入 qiankun 主应用。

更多内容请查看 qiankun 官方文档。

什么是微前端

Techniques, strategies and recipes for building a modern web app with multiple teams that can ship features independently. -- Micro Frontends

微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。

微前端架构具备以下几个核心价值:

  • 技术栈无关
    主框架不限制接入应用的技术栈,微应用具备完全自主权

  • 独立开发、独立部署
    微应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新

  • 增量升级

  • 在面对各种复杂场景时,我们通常很难对一个已经存在的系统做全量的技术栈升级或重构,而微前端是一种非常好的实施渐进式重构的手段和策略

  • 独立运行时
    每个微应用之间状态隔离,运行时状态不共享

微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用(Frontend Monolith)后,随之而来的应用不可维护的问题。这类问题在企业级 Web 应用中尤其常见。

更多关于微前端的相关介绍,推荐大家可以去看这几篇文章:

  • Micro Frontends

  • Micro Frontends from martinfowler.com

  • 可能是你见过最完善的微前端解决方案

  • 微前端的核心价值

六、源码地址

访问一飞开源:https://code.exmay.com/

相关推荐

  • 聊聊微服务中的 BFF 架构
  • 还不会免费将PDF转为Word?你可以试试这3种工具!
  • 春天,关于人生发展的 24 条心得
  • 微软前全球副总裁入局AGI:左手效率神器、右手AI开放世界,实测好用!
  • 对话国产“算力黑马”:27亿元大单背后,英博数科周韡韡的AGI探索之路
  • 街边的普通茶室也能赚600万,靠的不只是喝茶
  • 探探各个微前端框架
  • 前端代码规范 - 代码注释
  • 从商品图到海报生成 京东广告AIGC创意技术应用
  • 工科博士毕业去高校还是去研究所?
  • 今天是新模型发布大赛:Gemini 1.5 Pro发完,GPT-4-Turbo发,Mistral AI继续发……
  • 库存管理系统开源啦
  • 2.5K Star开源论坛!谁说Python只能写脚本工具
  • 小红书搜索团队提出新解码策略,降低大模型推理成本
  • 你真的知道 NPM、Yarn 与 PNPM 这三个前端包管理器之间的区别吗?
  • 4月10号马云的全员信,马云退休五年后首次发长文
  • 宇航员为什么使用Linux?
  • 开源流量回放平台AREX在携程的大规模落地实践
  • 老乡鸡“开源”了
  • 世界上最好的编程语言——PHP排名跌至历史最低