标准答案

  1. single-spa 主要提供微前端应用注册、路由匹配和生命周期调度。
  2. qiankun 在此基础上提供 HTML entry、样式隔离、JS 沙箱、资源加载等封装。
  3. 隔离通常覆盖子应用挂载容器、生命周期、部分全局变量和样式作用域。
  4. 它不能天然隔离 cookie、localStorage、接口权限、浏览器全局资源和所有 CSS 副作用。
  5. 团队仍要约定路由前缀、全局事件、状态通信、公共依赖、样式命名和错误兜底。

题目解析

这类方案的边界更接近“应用生命周期和运行环境隔离”,不是浏览器安全隔离。主应用知道什么时候加载、挂载、卸载子应用,子应用也要按约定清理副作用。

样式隔离和 JS 沙箱都不是无限能力。动态插入样式、全局弹窗、第三方 SDK、定时器、事件监听、localStorage 和 cookie 仍可能互相影响。子应用如果不清理副作用,卸载后问题还会留在页面里。

所以回答时要把“框架提供的隔离”和“团队必须治理的边界”分开:框架管生命周期和基础环境,业务团队管权限、数据、样式规范和通信契约。

代码示例

主应用通常按路由注册子应用,并由框架调度生命周期。

JavaScript
registerMicroApps([
  {
    name: 'order',
    entry: 'https://cdn.example.com/order/',
    container: '#subapp',
    activeRule: '/order'
  }
])

start()

常见误区

  • 把 qiankun 的沙箱理解成安全沙箱,以为子应用无法影响全局环境。
  • 子应用卸载时不清理事件监听、定时器、全局状态或动态样式。
  • 没有统一路由、权限、通信和错误处理契约,主子应用边界混乱。

作者信息