** 乾坤(Qiankun)和无界(Wujie)** 这两个前端微前端框架的对比。它们都是用于构建大型前端应用的微前端解决方案,但在架构设计、技术实现和适用场景上有一些差异。
核心区别
| 特性 | 乾坤(Qiankun) | 无界(Wujie) |
|---|---|---|
| 底层技术 | 基于 single-spa,通过 HTML entry 加载子应用 | 基于 iframe 和 Proxy,采用沙箱隔离技术 |
| 渲染方式 | 主子应用共享一个 DOM 树,需要处理样式冲突 | iframe 沙箱隔离,天然避免样式 / JS 冲突 |
| 性能开销 | 较小(无 iframe 嵌套) | 较大(iframe 有独立渲染上下文) |
| 通信机制 | 基于事件总线或状态库(如 Redux/Mobx) | 提供专用通信 API,支持跨域通信 |
| 适用场景 | 强交互、高性能需求的中大型应用 | 遗留系统集成、跨团队协作的复杂应用 |
优缺点对比
乾坤(Qiankun)
-
优点:
- 性能优化更好(无 iframe 开销)。
- 支持更灵活的样式隔离方案(CSS Modules、Shadow DOM 等)。
- 社区成熟,生态完善(如 umi 插件)。
-
缺点:
- 需要手动处理样式冲突和全局变量污染。
- 子应用改造成本较高(需适配基座)。
无界(Wujie)
-
优点:
- 天然隔离,无需担心样式 / JS 冲突。
- 支持跨域子应用,适合集成第三方系统。
- 子应用几乎零改造(只需暴露入口)。
-
缺点:
- iframe 带来的性能损耗和通信延迟。
- 复杂交互场景(如弹窗、拖拽)需要额外处理。
如何选择?
- 选乾坤:如果你的应用需要高性能、强交互,且团队有能力处理样式 / JS 隔离问题。
- 选无界:如果需要快速集成遗留系统或第三方应用,且能接受 iframe 的性能开销。
示例代码对比
乾坤(Qiankun)
// 主应用注册子应用
import { registerMicroApps, start } from 'qiankun';
registerMicroApps([
{
name: 'app1',
entry: '//localhost:8080',
container: '#subapp-viewport',
activeRule: '/app1',
},
]);
start();
无界(Wujie)
// 主应用加载子应用
import { createApp } from 'wujie';
const app = createApp({
name: 'app1',
url: '//localhost:8080',
container: '#subapp-container',
});
app.mount();
总结
- 乾坤适合追求极致性能和精细控制的场景。
- 无界适合快速集成和隔离需求优先的场景。
根据你的具体需求(如性能敏感、集成复杂度、团队技术栈)选择更合适的框架即可~