标准答案
- single-spa 主要提供微前端应用注册、路由匹配和生命周期调度。
- qiankun 在此基础上提供 HTML entry、样式隔离、JS 沙箱、资源加载等封装。
- 隔离通常覆盖子应用挂载容器、生命周期、部分全局变量和样式作用域。
- 它不能天然隔离 cookie、localStorage、接口权限、浏览器全局资源和所有 CSS 副作用。
- 团队仍要约定路由前缀、全局事件、状态通信、公共依赖、样式命名和错误兜底。
题目解析
这类方案的边界更接近“应用生命周期和运行环境隔离”,不是浏览器安全隔离。主应用知道什么时候加载、挂载、卸载子应用,子应用也要按约定清理副作用。
样式隔离和 JS 沙箱都不是无限能力。动态插入样式、全局弹窗、第三方 SDK、定时器、事件监听、localStorage 和 cookie 仍可能互相影响。子应用如果不清理副作用,卸载后问题还会留在页面里。
所以回答时要把“框架提供的隔离”和“团队必须治理的边界”分开:框架管生命周期和基础环境,业务团队管权限、数据、样式规范和通信契约。
代码示例
主应用通常按路由注册子应用,并由框架调度生命周期。
JavaScript
registerMicroApps([
{
name: 'order',
entry: 'https://cdn.example.com/order/',
container: '#subapp',
activeRule: '/order'
}
])
start()常见误区
- 把 qiankun 的沙箱理解成安全沙箱,以为子应用无法影响全局环境。
- 子应用卸载时不清理事件监听、定时器、全局状态或动态样式。
- 没有统一路由、权限、通信和错误处理契约,主子应用边界混乱。