Qiankun微前端框架入门指南

Qiankun微前端框架入门指南

qiankun 📦 🚀 Blazing fast, simple and complete solution for micro frontends. qiankun 项目地址: https://gitcode.com/gh_mirrors/qi/qiankun

什么是Qiankun

Qiankun是一个基于Single-Spa的企业级微前端框架,它可以帮助开发者将多个独立的前端应用整合为一个完整的系统。通过Qiankun,不同技术栈(React、Vue、Angular等)构建的应用可以共存于同一页面,并实现独立开发、独立部署。

主应用配置

1. 安装Qiankun

首先需要在主应用中安装Qiankun依赖:

npm install qiankun --save
# 或者使用yarn
yarn add qiankun

2. 注册微应用

在主应用中注册需要加载的微应用:

import { registerMicroApps, start } from 'qiankun';

registerMicroApps([
  {
    name: 'react-app',  // 应用唯一名称
    entry: '//localhost:7100',  // 微应用入口地址
    container: '#react-container',  // 挂载容器ID
    activeRule: '/react',  // 激活路由规则
  },
  {
    name: 'vue-app',
    entry: { scripts: ['//localhost:7100/main.js'] },  // 也可以指定具体入口文件
    container: '#vue-container', 
    activeRule: '/vue',
  },
]);

// 启动Qiankun
start();

当浏览器URL发生变化时,Qiankun会自动匹配activeRule返回true的微应用,并依次调用其生命周期钩子函数。

微应用配置

微应用无需额外安装Qiankun,但需要导出必要的生命周期函数并调整打包配置。

1. 导出生命周期函数

微应用需要在入口文件中导出以下生命周期函数:

// 初始化钩子,只会在微应用初始化时调用一次
export async function bootstrap() {
  console.log('微应用启动中...');
  // 可以在这里初始化全局变量或缓存
}

// 挂载钩子,每次进入微应用都会调用
export async function mount(props) {
  console.log('微应用挂载中...');
  // 在这里执行渲染逻辑
  ReactDOM.render(
    <App />,
    props.container 
      ? props.container.querySelector('#root') 
      : document.getElementById('root')
  );
}

// 卸载钩子,每次微应用切换/卸载时调用
export async function unmount(props) {
  console.log('微应用卸载中...');
  // 在这里执行清理逻辑
  ReactDOM.unmountComponentAtNode(
    props.container 
      ? props.container.querySelector('#root') 
      : document.getElementById('root')
  );
}

// 可选更新钩子(仅在使用loadMicroApp方式加载时可用)
export async function update(props) {
  console.log('微应用更新中...', props);
}

2. Webpack配置调整

为了让主应用能正确加载微应用,需要修改webpack配置:

Webpack 5配置
const packageName = require('./package.json').name;

module.exports = {
  output: {
    library: `${packageName}-[name]`,  // 将微应用打包为umd格式
    libraryTarget: 'umd',
    chunkLoadingGlobal: `webpackJsonp_${packageName}`,  // 避免全局变量冲突
  },
};
Webpack 4配置
const packageName = require('./package.json').name;

module.exports = {
  output: {
    library: `${packageName}-[name]`,
    libraryTarget: 'umd',
    jsonpFunction: `webpackJsonp_${packageName}`,  // Webpack 4使用jsonpFunction
  },
};

最佳实践建议

  1. 命名规范:为微应用设置唯一的名称,避免冲突
  2. 样式隔离:考虑使用CSS Modules或隔离技术实现样式隔离
  3. 状态管理:微应用间通信推荐使用自定义事件或状态管理库
  4. 公共依赖:将公共依赖提取到主应用,避免重复加载
  5. 错误处理:实现完善的错误边界和降级策略

常见问题

Q: 微应用如何获取主应用传递的数据?
A: 可以通过mount生命周期中的props参数获取主应用传递的数据

Q: 微应用路由如何与主应用协同工作?
A: 建议使用抽象路由或命名空间路由,避免路由冲突

Q: 如何实现微应用间的通信?
A: 推荐使用自定义事件或状态管理库,避免直接耦合

通过以上步骤,你就可以快速搭建一个基于Qiankun的微前端架构应用了。Qiankun的强大之处在于它对不同技术栈的兼容性和对大型应用的良好支持,是企业级微前端解决方案的优秀选择。

qiankun 📦 🚀 Blazing fast, simple and complete solution for micro frontends. qiankun 项目地址: https://gitcode.com/gh_mirrors/qi/qiankun

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡同琥Randolph

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值