Qiankun(next / v3)源码与架构深度解析
本文档基于本仓库 qiankun 3.0.0-rc.21(packages/qiankun/package.json)及 @qiankunjs/loader、@qiankunjs/sandbox、@qiankunjs/shared 等子包源码,梳理微前端场景下的加载管线、JS 沙箱、资源转译、与 single-spa 的衔接等核心设计,并结合源码注释、已知 FIXME/TODO 与公开 Issue/PR 讨论说明设计动机与权衡。
说明:Qiankun 与 Umi 是不同层级的产物——Qiankun 可独立使用;Umi 的
plugin-qiankun等是在工程侧对接 Qiankun 的集成方式。本文聚焦 本仓库 实现,便于与「Umi 插件配置」类问题区分。
目录
- 核心架构概述
- Monorepo 包职责与数据流
- 流式 Loader、Head 虚拟化与 writable-dom
- 沙箱:Membrane、Compartment 与 DOM 补丁
- 资源转译、Blob 执行与依赖共享
- single-spa 集成、loadApp 与 loadMicroApp
- 性能优化与预取策略
- 关键设计决策、依据与技术债
- 常见问题
源码版本
- qiankun: 3.0.0-rc.21(以
packages/qiankun/package.json为准) - 分析时间: 2026 年 3 月
参考资料
- Qiankun GitHub 仓库
- Qiankun Issues
- 🎉 qiankun 3.0 · PR #2473(大版本演进相关讨论入口)
- Roadmap / 讨论 · Discussions #1378(路线图类信息,以最新讨论为准)
- single-spa 文档(应用注册、Parcel、生命周期语义)
- SystemJS evaluate.js(间接 eval 行为)(与沙箱白名单
System逃逸说明同源) - webpack LoadScriptRuntimeModule(data-webpack)(多实例同屏与 chunk 缓存相关)
- writable-dom / marko-js 相关问题(同步脚本
async属性被 importNode 重置的兼容性说明)