微前端框架 qiankun 简明指南

一、什么是乾坤(qiankun)?

乾坤(qiankun)的核心作用是把多个独立开发、独立部署的前端应用(比如 Vue、React、Angular 项目)组合成一个完整的系统,让它们看起来像一个网站。

二、乾坤(qiankun)在干啥?

一句话说清楚:qiankun就是一个"前端项目大管家",专门帮你把不同技术开发的网页拼成一个大系统。

举个简单的例子:

传统开发模式:

就像你要装修一栋大楼,必须一次性把墙面、地板、家具全搞完。想换个马桶?得把整栋楼拆了重装。

使用qiankun的模式:

你现在可以分别定制各个房间:卧室交给A公司(Vue项目),客厅交给B公司(React项目),厨房交给C公司(Angular项目)。qiankun就是那个总包工头,把这些独立装修好的房间完美拼接成一栋完整的别墅。

实际场景(房产系统):

功能模块 谁开发 独立吗 qiankun管啥
二手房管理​ 二手房团队(用Vue) ✅ 独立开发 用户点"二手房"时加载这个模块
新房管理​ 新房团队(用React) ✅ 独立开发 用户点"新房"时加载这个模块
用户中心​ 后台团队(用Angular) ✅ 独立开发 用户点"我的"时加载这个模块

结果是:用户感觉是在用一个完整的网站,但其实背后是三个完全独立的项目在运行。

三、乾坤怎么用?(两步搞定)

第1步:主应用配置(告诉乾坤"有哪些积木")

在主项目的 main.js中,注册你要加载的子应用。

javascript 复制代码
// 主应用 main.js
import { registerMicroApps, start } from 'qiankun';

// 注册子应用(告诉乾坤:我有这些积木块)
registerMicroApps([
  {
    name: '二手房管理', // 应用名称(积木块名字)
    entry: '//localhost:8081', // 子应用的访问地址(积木块的下载地址)
    container: '#subapp-container', // 页面上的一个 div 容器(放在页面哪个位置)
    activeRule: '/second-hand', // 当URL是/second-hand时,加载这个应用(访问 /house 时显示它)
  },
]);

// 启动 qiankun
start();

2. 子应用(二手房管理)配置

在子应用的 main.js中,导出三个生命周期函数(类似 App.vue 的 mounted、unmounted)。

javascript 复制代码
// 子应用 main.js
import { createApp } from 'vue';
import App from './App.vue';

let app = null;

// 必须导出三个函数给乾坤调用
export async function bootstrap() {
  console.log('二手房应用启动');
}

export async function mount(props) {
  // 渲染到容器
  app = createApp(App);
  app.mount('#app'); // 注意:这里的 #app 是子应用自己的根节点
}

export async function unmount() {
  // 卸载应用
  app.unmount();
  app = null;
}

// 如果不是被乾坤加载,则独立运行
if (!window.__POWERED_BY_QIANKUN__) {
  createApp(App).mount('#app');
}

四、核心概念梳理

概念 解释 类比
主应用​ 微前端架构的"外壳"或"基座",负责加载和管理子应用 操作系统
子应用​ 独立开发、独立部署的前端应用,可以是 Vue/React/Angular 等 安装在操作系统上的 App
路由匹配​ 定义子应用在什么 URL 路径下被激活 网址导航
生命周期​ 子应用暴露的 bootstrap、mount、unmount函数 App 的安装、启动、卸载
样式隔离​ qiankun 自动创建沙箱,隔离子应用的 CSS 和 JS 每个 App 在独立的"房间"运行

五、为什么要用乾坤(qiankun)?

场景 痛点 qiankun 解决方案
技术栈升级​ 老项目是 Vue 2,新功能想用 Vue 3 或 React 18 新模块独立开发,老模块保留,通过 qiankun 整合
独立团队协作​ 不同团队负责不同模块,发布节奏不同 子应用独立部署,互不影响
巨型应用拆分​ 项目臃肿,构建慢,开发体验差 按业务拆分成多个子应用,并行开发

六、实际场景示例

假设你正在开发一个大型房产交易平台:

模块 技术栈 开发团队 部署地址
主框架​ (导航/登录) Vue 3 基础架构组 https://main.com
二手房管理​ Vue 2 二手房业务组 https://second-hand.com
新房管理​ React 18 新房业务组 https://new-house.com
租赁管理​ Vue 3 + TypeScript 租赁业务组 https://rent.com

访问流程:

  1. 用户打开 https://platform.com ,看到主框架。

  2. 点击"二手房",URL 变为 https://platform.com/second-hand 。

  3. qiankun 检测到 activeRule:'/second-hand' ,动态加载 https://second-hand.com 的代码。

  4. 二手房模块在主框架的 #subapp-container 容器中渲染。

七、注意事项

样式隔离:qiankun 默认开启 JS 沙箱,但 CSS 隔离需配合 Shadow DOM 或 CSS Modules 使用。

公共依赖 :避免子应用重复打包 Vue、React 等库,可通过 externals或主应用提供。

通信规范 :推荐使用 props或自定义事件通信,避免直接修改 window 对象。

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄4 天前
JavaScript 隐式全局变量解析
javascript
汉堡大王95274 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大4 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师4 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端