乾坤与无界区别

273 阅读2分钟

** 乾坤(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();

总结

  • 乾坤适合追求极致性能和精细控制的场景。
  • 无界适合快速集成和隔离需求优先的场景。

根据你的具体需求(如性能敏感、集成复杂度、团队技术栈)选择更合适的框架即可~