微前端qiankun接入Vue和React项目

news/2024/4/29 7:20:29

业务场景:主应用vue,子应用react18+umi,使用乾坤嵌入子应用页面(子应用目前只有一个页面)

主应用(vue)工作

  1. 首先,在主应用vue中安装qiankun依赖
yarn add qiankun 或者 npm i qiankun --save
  1. 创建需要嵌入子应用的页面或者组件
<template><div id="integrate-container" class="integrate-page"></div>
</template><script>
export default {name: 'IntegrateContainer',
};
</script><style lang="less">
.integrate-page {width: 100%;height: 100%;min-height: 100vh;border: 0;background: linear-gradient(180deg, #001034 0%, #000512 100%);
}
</style>
  1. 在main.js注册qiankun
// 微应用的注册信息
import { registerMicroApps, start } from 'qiankun';
registerMicroApps([{// 微应用的名称,后续微应用通过此名称进行识别name: 'serviceIntegrate',// 微应用的入口entry: 'https://ruianinfoscreen.ruijianai.com',// 微应用加载的容器,与上面的id需保持完全一致container: '#integrate-container',// 激活微应用的规则(路由),需要与路由文件的路径保持一致,同时需要与子应用嵌入页面的路由保持一致activeRule: '/service-integrate',// 向子应用传递参数props: {data: ""}},
]);// 启动乾坤
start();
  1. 路由文件添加该页面的路由
 {path: '/service-integrate',name: "serviceIntegrate",component: () => import('../views/Integrate/Index.vue'),},

子应用(react18+umi)工作

  1. 安装@umijs/plugin-qiankun依赖
yarn add @umijs/plugin-qiankun 或者 npm i @umijs/plugin-qiankun --save
  1. umirc.ts中开启qiankun的配置
qiankun: {slave: {},
},
// 开启全局初始状态管理,用于乾坤初始化接受参数时使用
initialState: {},
  1. package.json中添加name字段
{"name": "service-integrate",
}
  1. 在app.tsx中接收参数
let globalData: any
export const qiankun = {// 应用加载之前async bootstrap(props: any) {console.log('service-integrate bootstrap', props)},// 应用 render 之前触发async mount(props: any) {console.log('service-integrate mount', props)globalData = cloneDeep(props)},// 应用卸载之后触发async unmount(props: any) {console.log('service-integrate unmount', props)},
}
// 将初始化qiankun接受参数设置为全局初始状态,以便在页面中使用
export async function getInitialState() {// 页面中使用时const { initialState } = useModel('@@initialState')获取return globalData
}

部署到线上后会发现遇到跨域的问题,此时需要配置nginx

需要在子应用的nginx配置中加上下面这个配置,允许所有源都可以访问

set $core_orgin $http_origin;
add_header 'Access-Control-Allow-Origin' $core_orgin;
add_header 'Access-Control-Allow-Credentials' 'true' always;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11466.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Could not initialize class java.awt.Font

项目场景&#xff1a; 项目场景&#xff1a;java项目在web端导出Excel、Word、PDF等文档 问题描述 在Windows系统中开发以及运行文件导出正常&#xff0c;单机部署到Linux中或者使用docker部署后&#xff0c;导出报错。 异常&#xff1a; eleasing transactional SqlSession…

Linux系统下安装jdk与tomcat【linux】

一、yum介绍 linux下的jdk安装以及环境配置&#xff0c;有两种常用方法&#xff1a; 1.使用yum一键安装。 2.手动安装&#xff0c;在Oracle官网下载好需要的jdk版本&#xff0c;上传解压并配置环境。 这里介绍第一种方法&#xff0c;在此之前简单了解下yum。 yum 介绍 yum&…

第十四届蓝桥杯(八题C++ 题目+代码+注解)

目录 题目一&#xff08;日期统计 纯暴力&#xff09;&#xff1a; 代码&#xff1a; 题目二&#xff08;01串的熵 模拟&#xff09;&#xff1a; 代码&#xff1a; 题目三&#xff08;治炼金属&#xff09;&#xff1a; 代码&#xff1a; 题目四&#xff08;飞机降落 深度…

数字化时代多系统安全运维解决方案

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&…

Web CSS笔记3

一、边框弧度 使用它你就可以制作盒子边框圆角 border-radius&#xff1a;1个值四个圆角值相同2个值 第一个值为左上角与右下角&#xff0c;第二个值为右上角与左下角3个值第一个值为左上角, 第二个值为右上角和左下角&#xff0c;第三个值为右下角4个值 左上角&#xff0c;右…

校园局域网钓鱼实例

Hello &#xff01; 我是"我是小恒不会java" 本文仅作为针对普通同学眼中的网络安全&#xff0c;设计的钓鱼案例也是怎么简陋怎么来 注&#xff1a;本文不会外传代码&#xff0c;后端已停止使用&#xff0c;仅作为学习使用 基本原理 内网主机扫描DNS劫持前端模拟后端…