基于qiankun的微前端架构实践

随着前端应用规模的不断扩大,微前端架构作为一种解决大型前端应用拆分与整合的方案,受到了越来越多开发者的关注。本文将分享基于 qiankun 的微前端项目实践,展示如何实现一个包含 React 主应用和 Vue/React 子应用的微前端系统。

一、项目概述

本项目采用 qiankun 作为微前端框架,实现了一个模块化、可扩展的前端架构。项目结构如下:

  • 主应用:基于 React 19 + Ant Design 构建,负责整体布局、模拟用户登录和子应用加载
  • React 子应用:基于 React 19 + Ant Design 构建,提供业务功能模块
  • Vue 子应用:基于 Vue 3 + Element Plus + Pinia 构建,提供另一部分业务功能

这种架构设计使得不同技术栈的团队可以独立开发、测试和部署各自的子应用,同时又能在统一的主应用中无缝集成,为用户提供一致的体验。
项目演示案例:

  • 主应用
    react框架主应用
  • vue子应用
    基于vu框架子应用
  • react子应用
    基于react框架子应用

二、主应用实现

1. qiankun 集成与配置

主应用是微前端架构的核心,负责注册和管理各个子应用。在 main-app/src/index.js 中,我们通过 qiankun 提供的 API 完成子应用的注册和启动:

import {
   
    registerMicroApps, start, addGlobalUncaughtErrorHandler } from 'qiankun';
import {
   
    state } from './MicroAppState'

// 注册子应用
registerMicroApps([
  {
   
   
    name: 'app-vue',
    entry: process.env.NODE_ENV === 'development' ? '//localhost:8080/' : '/child/vue-history/',
    container: '#container',
    activeRule: '/app-vue-history'
  },
  {
   
   
    name: 'react-app',
    entry: process.env.NODE_ENV === 'development' ?'//localhost:3002':'/child/react-history/',
    container: '#container',
    activeRule: '/react',
    props: state
  },
], {
   
   
  afterMount: (app) => {
   
   
    // 子应用挂载后的回调
  }
});

// 启动 qiankun
start({
   
   
  sandbox: false
});

这段代码中,我们做了以下几件事:

  • 通过 registerMicroApps 注册了两个子应用(Vue 和 React)
  • 为每个子应用配置了名称、入口地址、容器和激活规则
  • 通过 start 启动 qiankun,关闭了沙箱模式(sandbox: false

2. 全局状态管理

为了实现主应用与子应用之间的通信,我们使用了 qiankun 的全局状态管理功能。在 main-app/src/MicroAppState.js 中:

import {
   
    initGlobalState } from 'qiankun';

export let state = {
   
   
  userName: 'qiankun',
  app: null, // 当前运行的应用名称
  sidebarVisible: true // 主应用侧边栏是否显示
}

// 初始化 state
const actions = initGlobalState(state);

actions.onGlobalStateChange((newVal, prev) => {
   
   
  console.log(newVal, prev);
});

export const setGlobalState = (newState) => {
   
   
  actions.setGlobalState(newState)
}

export const onGlobalStateChange = (callback) => {
   
    return actions.onGlobalStateChange(callback);</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值