微前端框架选型

概述

怎么说呢,对于大型复杂应用,单体前端应用的局限性是比较明显的,构建时间漫长、团队协作困难、技术栈升级风险高等问题,微前端架构通过将大型前端应用拆分为多个独立的小型应用,实现了技术栈无关、独立开发、独立部署等优势,为前端开发带来了全新的可能性,微前端解决方案逐渐丰富,如下主要从对比开源主流的几个微前端技术解决方案。

一、技术方案对比

| 框架 | qiankun | Single-SPA | 无界(wujie) | Micro-App(京东) | EMP |
|------------|--------------------------|----------------|-----------------------------|---------------------------------------------------|----------------------|-----|
| 核心原理 | 基于 Single-SPA 封装 | 路由级基座框架 | WebComponent + iframe 增强 | WebComponent | Module Federation 增强 |
| 沙箱隔离 | JS/CSS 沙箱 | 无 | 基于 iframe 的天然隔离 | JS 代理沙箱 + CSS 隔离 | 无 |
| 通信机制 | props + globalState | 自定义 | props + window 通信 | 数据通信 + 事件总线 | Webpack 共享依赖 |
| Vite支持 | 需插件(vite-plugin-qiankun) | 需手动配置 | 原生支持子应用, 主应用vite + vue3还不支持 | 1.0版本支持(当前版本1.0-rc)且vite做为子应用,目前只能使用firame沙箱(with | iframe) | 需改造 |
| 预加载 | 手动配置 | 无 | 自动预加载 | 自动预加载 | 动态加载 |
| 子应用类型 | 任意前端框架 | 任意前端框架 | 任意前端框架 | 任意前端框架 | 需 Webpack 工程化 |
| 调试体验 | 需代理配置 | 独立调试 | 独立调试 + 嵌套调试 | 独立调试 | 依赖主应用 |
| 维护团队 | 阿里 | 社区驱动 | 腾讯 | 京东 | 个人维护 |
| TS支持 | 完善 | 需自行适配 | 完善 | 完善 | 部分支持 |
| SSR支持 | 不支持 | 支持 | 不支持 | 不支持 | 不支持 |

二、建议矩阵

评估维度 qiankun 无界 Micro-App Single-SPA
上手难度 中等 简单 简单 困难
隔离安全性 极高
通信便捷性 中等 需自行实现
Vite兼容性 需插件 原生支持 原生支持 需适配
旧系统兼容 优秀 优秀 优秀 中等
技术可控性 极高
生产环境案例 阿里系 腾讯文档 京东零售 多家企业

三、项目维护情况

以下数据均统计自master 主分支

框架 qiankun wujie miro-app
近3月commit次数 0 19 20
近6月commit次数 0 19(+2,于6月) 36

四、特别建议

无界方案 在以下场景表现突出:

  • 需要嵌入第三方不可控页面(如外部 SaaS 系统)
  • 要求子应用保活(切换不重载)
  • 需要主子应用保持路由同步

京东micro-app

  • 需要嵌入第三方不可控页面(如外部 SaaS 系统) 无论是否为第三方页面,只要是子页面就要求:第三方页面支持跨域
  • 要求子应用保活(切换不重载)mirco-app 提供的keep-alive是针对应用级别,而子应用自己的保活使用vue自己的keep-alive
  • 提供浏览器插件 【插件地址

五、实际项目使用qiankun经验

公司项目使用qiankun构建微应用已经运行好几年了,大体上其实没什么大问题,只有下面的几个缺点

  • 不维护了
  • 不支持缓存(微应用环境)
  • 对vite构建的项目支持不友好(需要自行通过社区插件处理)
相关推荐
kyriewen8 小时前
我手写了一个 EventEmitter,面试官追问了 6 个问题——第 4 个我没答上来
前端·javascript·面试
IT_陈寒8 小时前
Java的Date类又坑了我一次,改用时间戳真香
前端·人工智能·后端
山河木马9 小时前
矩阵专题2-怎么创建视图矩阵(uViewMatrix)
javascript·webgl·计算机图形学
小林攻城狮9 小时前
使用 Transport 节流解决 Vercel AI SDK 流式渲染卡死问题
前端·react.js
前端缘梦9 小时前
告别 TS 运行时类型漏洞!Zod 完整入门实战教程(前端 / 全栈必备)
前端·react.js·全栈
the_answer9 小时前
Webpack vs Vite 深度对比分析
前端·webpack
转转技术团队10 小时前
验证码识别实战:前端不写页面,改训模型了?
前端
MomentYY10 小时前
Temperature:AI 的“脑洞旋钮”
前端·llm·ai编程
远航_10 小时前
OpenSpec 完整详细介绍
前端·后端
召钱熏10 小时前
状态枚举正确≠渲染正确:一个语音按钮的状态机边界修复实录
android·前端