1. Qiankun微前端架构概述
Qiankun(乾坤)是阿里开源的一款基于Single-SPA的微前端解决方案框架。作为目前国内最成熟的微前端实现方案之一,它解决了多技术栈应用集成、独立开发独立部署、运行时沙箱等核心问题。我在最近的项目中采用Qiankun重构了公司后台管理系统,将原有的AngularJS老应用与React新模块进行了完美融合。
微前端的核心思想是将大型前端应用拆分为多个可以独立开发、独立运行、独立部署的子应用,再通过主应用进行调度和组装。Qiankun在此基础上提供了更完善的功能:
- 样式隔离:通过动态样式表加载/卸载机制和Scoped CSS实现
- JS沙箱:Proxy代理window对象实现多实例运行时隔离
- 资源预加载:在浏览器空闲时预加载子应用静态资源
- 通信机制:提供initGlobalState方法实现主子应用通信
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境搭建与配置
2.1 主应用配置要点
主应用通常使用Vue或React作为技术栈。以Vue3项目为例,关键配置如下:
javascript复制// main.js
import { registerMicroApps, start } from 'qiankun';
registerMicroApps([
{
name: 'react-app',
entry: '//localhost:7100',
container: '#subapp-container',
activeRule: '/react',
props: {
userInfo: { name: 'Kael' }
}
}
]);
start({
prefetch: 'all',
sandbox: { strictStyleIsolation: true }
});
关键参数说明:
strictStyleIsolation: true启用严格的样式隔离(Shadow DOM)prefetch: 'all'预加载所有子应用资源props可用于向子应用传递初始数据
2.2 子应用适配改造
子应用需要导出生命周期钩子函数:
javascript复制// react子应用的public-path.js
if (window.__POWERED_BY_QIANKUN__) {
__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}
// index.js
export async function bootstrap() {
console.log('React子应用启动');
}
export async function mount(props) {
renderApp(props.container);
}
export async function unmount() {
unmountApp();
}
同时需要修改webpack配置:
javascript复制// vue.config.js
module.exports = {
devServer: {
headers: {
'Access-Control-Allow-Origin': '*'
}
},
configureWebpack: {
output: {
library: `${name}-[name]`,
libraryTarget: 'umd',
jsonpFunction: `webpackJsonp_${name}`
}
}
};
