微前端知识内容
微前端(Qiankun)架构相关的常见问题在面试或实际项目中经常出现,以下是一些高频问题及解答方向:
一、微前端基础概念
- 什么是微前端?与单体应用相比有什么优劣?
解释微前端概念,即多个独立的前端应用组合成一个整体应用。
优势:技术栈无关、独立开发部署、降低复杂度。
劣势:资源开销增加、应用间通信复杂、性能优化难度提升。
- Qiankun 主要基于什么技术实现的?
主要基于 single-spa,并进行二次封装,提供更好的 应用加载管理、沙箱隔离、应用通信 能力。
- Qiankun 的基本原理是什么?如何加载子应用?
通过劫持路由(Hash/History),监听路径变化,加载对应的子应用。
使用 import-html-entry 解析子应用 HTML 入口,并通过 execScript 执行 JS。
通过沙箱机制(如 Proxy、Snapshot)实现 JS 作用域隔离。
二、应用注册与生命周期
- Qiankun 是如何注册子应用的?
registerMicroApps() 方法用于注册子应用,配置 name、entry、container、activeRule 等参数。
start() 方法启动微前端框架,使子应用按需加载。
- Qiankun 的生命周期钩子有哪些?分别做什么?
bootstrap:应用初始化,仅执行一次。
mount:子应用挂载,进入 DOM 并执行初始化逻辑。
unmount:子应用卸载,清理全局状态,移除 DOM。
update(可选):用于热更新的钩子。
三、应用间通信
- 如何实现主应用与子应用之间的通信?
props 传参:主应用通过 props 传递数据。
自定义事件(Event Bus):使用 window.dispatchEvent & window.addEventListener 进行事件派发和监听。
Shared State(全局状态管理):使用 qiankun 提供的 initGlobalState,或者采用 Redux、Pinia 等库共享状态。
- 如果某个子应用需要更新主应用的数据,该如何处理?
可以通过 qiankun 的 setGlobalState 方法更新全局状态,并在主应用监听 onGlobalStateChange 处理变更。
也可以通过自定义事件 dispatchEvent,在主应用监听事件并更新数据。
四、子应用沙箱隔离机制
- Qiankun 的沙箱机制是如何实现的?
Snapshot 沙箱(快照沙箱):基于变量存取前后快照恢复。
Proxy 沙箱(代理沙箱):使用 Proxy(window) 实现隔离,避免污染全局环境。
Legacy 沙箱(兼容模式):适用于不支持 Proxy 的低版本浏览器,通过修改 window 变量实现隔离。
- 子应用之间的全局变量污染如何解决?
启用 sandbox: { strictStyleIsolation: true } 进行样式隔离,或使用 CSS Modules、Shadow DOM。
通过 Proxy 沙箱限制子应用修改全局 window,避免变量冲突。
五、性能优化与问题排查
- 如何优化 Qiankun 微前端的性能?
资源预加载:开启 prefetch,减少应用切换时的白屏时间。
并行加载:多个子应用可以通过 loadMicroApp 预加载并缓存。
懒加载:按需加载 JavaScript 资源,减少首屏加载压力。
缓存策略:利用 Service Worker 或 CDN 缓存静态资源。
- 子应用卸载后,仍然存在内存泄漏怎么办?
检查 unmount 钩子是否完整清理了定时器、事件监听、WebSocket 连接等。
可以在 unmount 时手动调用 document.querySelector(container).innerHTML = ‘’ 彻底移除 DOM。
六、部署与运维
- 如何实现主应用和子应用的独立部署?
子应用可单独部署到不同域名或路径下,主应用通过 entry 配置动态加载。
可以结合 Nginx 进行跨域代理,或通过 Access-Control-Allow-Origin 允许 CORS 访问。
- 如何处理不同子应用之间的路由同步?
使用 qiankun 提供的 setGlobalState 进行路由同步。
采用 window.history.pushState() 在主应用和子应用间同步 URL。
若子应用使用 Vue Router 或 React Router,确保 basename 配置一致,避免路径冲突。
- 如何让子应用在 iframe 里运行?适用于什么场景?
在 container 配置 iframe 作为渲染容器,并通过 postMessage 进行跨窗口通信。
适用于需要极强隔离(安全性要求高)的应用,如后台管理系统、第三方 SaaS 组件。
这些问题涵盖了 Qiankun 微前端架构的核心知识点,结合实际经验回答会更有说服力。如果你有特定项目上的挑战,也可以详细探讨。