运行模式介绍
Wujie 的运行模式主要分为以下三种:
- 保活模式:当子应用的
alive参数设置为true时进入保活模式。此模式下,子应用只会进行一次渲染,页面切换时子应用的 DOM 会被保留在内存中,重新激活时直接挂载到容器上。子应用路由不会随 URL 变化而改变,需要通过通信方式跳转路由 - 单例模式:当子应用的
alive参数为false且进行了生命周期改造时进入单例模式。子应用页面切换时,会销毁当前实例并创建新的实例,同时路由会跳转到对应 URL - 重建模式:当子应用未设置保活模式且未进行生命周期改造时进入重建模式。每次页面切换都会销毁子应用的 DOM 和 iframe,子应用实例和 Wujie 实例也会被销毁。路由变化后,子应用会重新渲染
优劣对比及适用场景建议
一、保活模式(alive: true)
优点
- 状态保留:子应用实例、DOM、路由状态等完全保留,内存中快速恢复
- 事件持续性:子应用可持续响应全局事件(如通信总线
bus) - 性能优势:切换时仅挂载/卸载 WebComponent,无重复渲染开销
缺点
- 内存占用高:长期保留实例可能导致内存压力
- 路由不自动跳转:需通过手动通信控制子应用路由
适用场景
- 高频切换:如导航菜单频繁切换子应用页面
- 强状态依赖:子应用需保留表单数据、动画状态等实时信息
二、单例模式(alive: false + 生命周期改造)
优点
- 路由自动跳转:主应用 URL 变动可直接触发子应用路由更新
- 内存优化:实例按需销毁重建,内存占用可控
- 共享实例:同名子应用可共享 Wujie 实例,支持多菜单共用同一子应用
缺点
- 实例重建开销:页面切回时需重新初始化子应用
- 生命周期依赖:需子应用配合改造(
window.__WUJIE_MOUNT/UNMOUNT)
适用场景
5
- 多入口共用子应用:如多个菜单共用同一子应用的不同页面
- 路由联动需求:主应用 URL 需精确映射子应用路由
三、重建模式(未配置保活/未改造生命周期)
优点
- 资源释放彻底:完全销毁 iframe、WebComponent 等资源,无残留风险
- 实现简单:无需额外配置或子应用改造
缺點
- 性能差:每次切换需完全重建子应用实例和资源
- 路由冲突:若开启路由同步,参数优先级高于 URL 变更
适用场景
- 低频使用:如仅偶尔访问的静态页面
- 兼容性需求:对内存敏感或需规避长期运行的潜在问题(如内存泄漏)
选型建议
| 业务需求 | 推荐模式 | 决策依据 |
|---|---|---|
| 高频切换且需保留状态 | 保活模式 | 避免重复初始化,保障用户体验连续性 |
| 多入口共用子应用 | 单例模式 | 通过实例共享降低内存冗余 |
| 子应用功能简单、访问低频 | 重建模式 | 简化实现,规避复杂维护成本 |
示例
- 后台管理系统仪表盘:保活模式(多个监控面板快速切换)
- 电商平台商品/订单分离页:单例模式(主菜单共用子应用,路由精确同步)
- 临时活动页:重建模式(一次性使用,结束后彻底释放资源)
参考文档:无界官方文档 —— wujie运行模式