Skip to content

v2.0 与现状

基于 wujie v2(2026-06 复活) · 核于 2026-07

速查

  • wujie v1 线(2021~2023) 迭代到 v1.0.29 后长期沉寂,一度被认为停更
  • 2026-06 发布 v2.0,官方称**「全新空白同域 iframe 沙箱」,并连发 4 版复活**(v2.0.0 → v2.0.1 → v2.0.2 → v2.1.0,全在 2026-06)
  • v2.0 沙箱内核重构的核心收益:支持浏览器前进后退(子应用 iframe 路由正确进入浏览器历史栈),修了 v1 时代 iframe 路由与浏览器历史割裂的老痛点
  • v2.1.0(2026-06-15) 关键变更:内联事件处理器在子应用作用域执行、修复异步加载 CSS 重复插入、修复子应用刷新 destroy 竞态内存泄漏、新增 refreshApp API(子应用全量重建刷新)
  • 选型定位:wujie = 隔离最强(iframe 物理隔离)+ Vite/ESM 原生友好 + 保活预加载秒开,甜区是**「复杂子应用 + 要最强隔离 + Vite 主力」**
  • qiankun 分野:qiankun 软沙箱省内存但隔离弱、ESM 难;wujie 物理隔离最强、Vite 友好但有 iframe 开销
  • micro-app 分野:都走自定义元素用法,但 wujie 默认 iframe 物理沙箱(最强、最重),micro-app 默认 with/Proxy 软沙箱(更轻、也提供 iframe 模式)——详见其(前向引用)
  • 局限:每子应用一个 iframe 的内存/启动开销同域约束location 操作走 window.$wujie.location)、弹窗需处理 Shadow DOM 逃逸、第三方全局变量在闭包里需显式挂 window
  • 一句话现状:2026-06 v2.0 复活、月内连发 4 版,iframe 路线在「隔离 + Vite」两个维度上仍是独一档

一、v2.0:全新空白同域 iframe 沙箱

wujie 的 v1 线在 2021~2023 年间迭代到 v1.0.29,之后长期沉寂——社区一度把它归入「停更」阵营。转机在 2026-06:wujie 发布 v2.0,官方定调为**「全新空白同域 iframe 沙箱」**,重构了沙箱内核。

「空白同域 iframe 沙箱」的三个关键词(详细原理见 iframe JS 沙箱):

  • 空白(blank):iframe 指向一个空白的同域地址,当作纯净的「白纸 window」承载子应用 JS。
  • 同域(same-origin):iframe 与主应用同源,window.parent/contentWindow 直连、document 可代理——这是通信与 WC 桥接的地基。
  • 支持浏览器前进后退:v2.0 沙箱让子应用在 iframe 里的路由操作正确进入浏览器历史栈,配合路由同步,浏览器的前进/后退按钮能正确驱动子应用路由——这是 v1 时代 iframe 与浏览器历史割裂的老痛点,v2.0 正面解决

二、连发 4 版:2026-06 复活时间线

v2.0 不是发一版就停,而是一个月内连发 4 版密集迭代,是「复活」而非「昙花」的信号:

时间版本关键内容
2021~2023v1.0.0 → v1.0.29v1 线,iframe+WC 路线成型,此后长期沉寂
2026-06 初v2.0.0全新空白同域 iframe 沙箱,支持浏览器前进后退
2026-06-03v2.0.1v2.0 沙箱问题修复迭代
2026-06-04v2.0.2持续修复
2026-06-15v2.1.0内联事件处理器子应用作用域执行、修异步 CSS 重复插入、修 destroy 竞态内存泄漏、新增 refreshApp

v2.1.0(2026-06-15) 是复活后第一个 minor,四条变更含金量高:

  • 内联事件处理器在子应用作用域执行:修正了 HTML 内联 onclick 等在沙箱作用域的执行归属。
  • 修复异步加载 CSS 重复插入:异步样式表不再重复注入。
  • 修复子应用刷新 destroy 竞态导致的内存泄漏:直击 iframe 路线最敏感的内存问题。
  • 新增 refreshApp API:支持子应用全量重建刷新(对应重建模式的编程式触发)。

这几条修复看似琐碎,方向却很明确——都在补 iframe 路线最敏感的短板(内存泄漏、样式重复、作用域归属),是「认真维护」而非「刷个版本号」的信号。把 v2 相比 v1 的可感知变化列出来:

能力v1 线v2(2026-06 起)
iframe 沙箱内核旧同域 iframe 沙箱全新空白同域 iframe 沙箱
浏览器前进/后退支持不完善正确驱动子应用路由
子应用刷新内存destroy 竞态易泄漏v2.1.0 修复竞态泄漏
编程式全量刷新无专用 APIrefreshApp(v2.1.0 新增)
维护活跃度长期沉寂月内连发 4 版

为什么这次复活值得关注:2026 年的微前端格局里,qiankun 3.0 三年 rc 难产、2.x 又接不了 Vite,「要强隔离又要 Vite 友好」一度是块空位。wujie 的 iframe 路线天然同时满足这两点,v2.0 复活恰好填补了这个位置——它不与 qiankun 抢「存量 webpack 开箱」的盘,而是卡住「Vite 时代 + 复杂子应用 + 强隔离」这个增量场景。这也是本叶把 wujie 单列一叶、而非并入 qiankun 讲的原因:它代表一条与 Proxy 软沙箱正交的技术路线

三、选型定位:wujie 的甜区

把 wujie 放进 2026 微前端选型全景(全景见微前端基础·2026 选型),它的定位非常清晰——三个「最」

  • 隔离最强:iframe 物理隔离,子应用有独立的原生 window/history/location,不像 Proxy 软沙箱「防意外不防恶意」。
  • Vite/ESM 最友好:ESM 交 iframe 里的浏览器原生执行,零改造接 Vite 子应用——这正是 qiankun 2.x 的最大痛点。
  • 保活预加载秒开最顺:原生 alive 保活 + preloadApp 预加载/预执行,切换秒切、首进秒开。

对应的甜区场景子应用复杂(大型 SPA、强样式/强全局副作用,需要强隔离兜底)+ 技术栈是 Vite + 追求切换/首屏体验。反过来,轻量子应用、极致省内存、单页嵌很多个小应用的场景,iframe 的内存开销就不划算,此时 qiankun/micro-app 的软沙箱更轻。

四、与 micro-app 的对比

wujie 和 micro-app(前向引用叶,京东出品)是 2026 两个「Vite 友好、组件化用法」的热门方案,常被放一起比。二者路线同中有异

维度wujiemicro-app
用法组件 <WujieVue> / <wujie> 自定义元素自定义元素 <micro-app name url>(类 Web Components)
默认 JS 沙箱iframe 物理沙箱(最强、最重)with/Proxy 软沙箱(更轻;也提供 iframe 模式)
DOM 容器<wujie> WebComponent + shadowRoot自定义元素(默认 scopedcss,可选 Shadow DOM)
隔离强度最强(物理)较强(软沙箱为主,iframe 模式可升级)
内存开销每应用一 iframe,较高软沙箱模式较低
保活原生 alive支持 keep-alive

一句话区分:都主打「像用组件一样用子应用 + Vite 友好」,但 wujie 默认把隔离拉满(iframe 物理沙箱、代价是内存),micro-app 默认更轻(软沙箱、代价是隔离弱一档)。micro-app 的具体实现、沙箱模式、<micro-app> 用法属于它自己的叶(本站前向引用,待产出),本页不展开。

五、局限:iframe 路线的代价

wujie 的强隔离不是白来的,选型时要正视这些结构性代价

  • 内存与启动开销:每个子应用(尤其保活/预执行的)常驻一个 iframe + WebComponent + 其 JS 运行时,同屏多子应用内存占用高(见 保活与预加载·内存代价)。
  • 同域约束:沙箱是同域 iframe,子应用直接操作 locationwindow.location.href = ...)可能替换掉 iframe 导致「跨域 frame 访问被拦」,须改用 window.$wujie.location;Vite 子应用尤其要注意。
  • 弹窗与 Shadow DOM:DOM 在 shadowRoot 里,Popper 弹窗定位、@font-face 字体需按常见问题处理(见 WC 渲染)。
  • 第三方全局变量:脚本在 iframe 闭包里执行,库的全局声明可能不挂到 window,需 window.xxx = ... 显式挂载或用插件替换。
  • 降级体验:老浏览器 degrade 回退到 iframe 直接渲染,弹窗无法覆盖全屏(见 iframe 沙箱·降级)。

六、选型决策:何时用 wujie、何时别用

把上面的「甜区」与「局限」合成一张可直接对照的决策表——wujie 不是万能钥匙,是「用内存换隔离与体验」的特化选择

你的情况倾向原因
子应用是 Vite/ESM 技术栈✅ wujieESM 交 iframe 浏览器原生执行,零改造;qiankun 2.x 接不了
子应用复杂、强全局副作用,要强隔离兜底✅ wujieiframe 物理隔离最强,防子应用互相污染
高频往返、要状态不丢 / 秒切✅ wujie原生 alive 保活 + 预加载秒开
需要同屏并存多个子应用✅ wujie组件化、天然多实例,无需注册
单页要嵌很多个轻量小应用⚠️ 慎选每应用一 iframe,内存开销叠加
存量 webpack 项目、要开箱即用➡️ qiankun生态成熟、软沙箱省内存
更轻的软沙箱 + 组件化用法➡️ micro-appwith/Proxy 软沙箱,内存更省
极致控制、自建底座➡️ single-spa只做编排,隔离/加载自理

一条实践准则:先问技术栈(Vite → wujie 天然友好)、再问隔离需求(子应用越复杂、越需要强隔离越偏 wujie)、最后算内存账(并存子应用越多、越轻,iframe 开销越不划算)。选型全景(六框架横向对比)见微前端基础·2026 选型全景

小结

wujie 在 2021~2023 迭代到 v1.0.29 后长期沉寂,2026-06 以 v2.0「全新空白同域 iframe 沙箱」复活、月内连发 4 版(v2.0.0/0.1/0.2/2.1.0),核心补上了「支持浏览器前进后退」,v2.1.0 还修了 destroy 竞态内存泄漏、新增 refreshApp。它的定位是隔离最强 + Vite 原生友好 + 保活预加载秒开,甜区是「复杂子应用 + 强隔离 + Vite」;与 micro-app 同走组件化 Vite 友好路线,但 wujie 默认把隔离拉满(iframe 物理沙箱、代价是内存)。局限也都源于 iframe 路线:内存/启动开销、同域约束、弹窗 Shadow DOM 逃逸。要把全部 API、模式、通信一表查全,见参考