微前端qiankun打包部署

devtools/2025/2/22 13:53:46/

官网:API 说明 - qiankun

前提:后台项目,在主应用设置菜单,微应用渲染组件,没有使用路由跳转loadMicroApp

1.token需要使用setGlobalState,传参或者方法用的setGlobalState

2.打包没有使用Nginx

3.有需要新打开的跳转页面写在主应用中进行跳转

主应用设置成hash

javascript">const router = new VueRouter({mode: 'hash',base: process.env.BASE_URL,routes
})

4.方法传递:

javascript">// 主应用
import { setGlobalState } from 'qiankun';
handler(param){}
actions.setGlobalState({mainMethods: {some: this.handler}
});// 子应用,param是参数
// main.js
created() {onGlobalStateChange((state) => {this.$store.commit("setMainMethods", state.mainMethods);}, true);
},
// 实际页面中-(在需要打开新的菜单时使用)
const mainMethods = this.$store.state.mainMethods;
if (mainMethods && mainMethods.some) {mainMethods.some(param);
}

5.打包(打包花了我很长时间,不使用Nginx)

javascript">1.主应用入口配置:
<div :id="component">
</div>
let container = component;//页面中div的组件id值,取个唯一的let map = {}
if (process.env.NODE_ENV === 'development') {map = {file1: '8081',// 模块1file2: '8082', // 模块2};
} else if (process.env.NODE_ENV === 'production') {map = {file1: '/child/file1/index.html',// 模块1file2: '/child/file2/index.html', // 模块2};
}
// componentType是入口值,判断当前组件页面时那个微应用的,就打开哪个端口的微应用
const entry = process.env.NODE_ENV === 'development' ? `//localhost:${map[type]}` : map[type];
this.load[content] = loadMicroApp({name: component,//组件名称entry,//入口地址container: container,//页面中的组件渲染divprops: {// 传参,根据需要来onGlobalStateChange: actions.onGlobalStateChange,setGlobalState: actions.setGlobalState,  },
}, {sandbox: { experimentalStyleIsolation: false }
});
2.微应用配置vue.config.js:
publicPath: process.env.NODE_ENV === 'development'?'/':'/child/file1/',
3.打包目录结构
└── html/                     # 根文件夹|├── child/                # 存放所有微应用的文件夹|   ├── file1/            # 这个目录里面放文件就行了,不要再套一个dist|   ├── file2/     ├── index.html            # 主应用的index.html├── css/                  # 主应用的css文件夹├── js/                   # 主应用的js文件夹

仔细看qiankun官网就可以了,最重点的是,

我遇到如下报错:配置entry时要加上index.html(这是重点!!其他照着官网上来就可以了)

我还遇到了微应用地址报500的问题:

部署的时候会有一个配置文件(配置api代理地址),这个文件只要放在跟目录下就行了,子目录里面不要放这个文件,不然微应用会报错500


http://www.ppmy.cn/devtools/160954.html

相关文章

golang panic信息捕获

背景 我们的日志接入阿里云sls平台&#xff0c;但是&#xff0c;日志是以json的格式存储在阿里云sls平台上&#xff0c;程序中产生的error,info等日志都可以实现以json的格式打印。但是&#xff0c;golang程序中产生的panic信息本身不是以json的格式输出&#xff0c;这就导致p…

Python连接MySQL数据库完全指南

Python连接MySQL数据库完全指南 一、环境准备四部曲 1. 安装MySQL服务器&#xff08;Docker极简版&#xff09; docker run --name mysql2025 -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306 -d mysql:8.4 2. 安装Python连接驱动 # 官方推荐量子加密版 pip install mysql-con…

使用AI创建流程图和图表的 3 种简单方法

你可能已经尝试过使用 LLMs 生成图像&#xff0c;但你有没有想过用它们来创建 流程图和图表&#xff1f;这些可视化工具对于展示流程、工作流和系统架构至关重要。 通常&#xff0c;在在线工具上手动绘制图表可能会耗费大量时间。但你知道吗&#xff1f;你可以使用 LLMs 通过简…

【05】密码学与隐私保护

5-1 零知识证明 零知识证明介绍 零知识证明的概念 设P&#xff08;Prover&#xff09;表示掌握某些信息&#xff0c;并希望证实这一事实的实体&#xff0c;V(Verifier&#xff09;是验证这一事实的实体。 零知识证明是指P试图使V相信某一个论断是正确的&#xff0c;但却不向…

agent和android怎么结合:健康助手,旅游助手,学习助手

agent和android怎么结合:健康助手,旅游助手,学习助手 创新点 智能交互创新:提出全新的agent - Android交互模式,如基于手势、语音、眼动等多模态融合的交互方式。例如让agent能够同时理解用户的语音指令和手势动作,在Android设备上提供更加自然和高效的交互体验,比如在…

docker 安装redis 7.4.2并挂载配置文件以及设置密码

文章目录 docker 安装redis 7.4.2下载 redis如果你喜欢使用最新的版本创建挂载redis 配置文件创建容器 docker 安装redis 7.4.2 截至2025年2月21日&#xff0c;Redis的最新稳定版本是 7.4.2。 下载 redis 如果你想拉取Redis的特定版本&#xff08;例如最新的稳定版本 7.4.2&a…

基于ffmpeg+openGL ES实现的视频编辑工具-添加滤镜(七)

在我们的视频编辑工具中,综合运用 ffmpeg 和 OpenGL ES 实现对图像和视频添加滤镜的功能。下面将对其核心逻辑以及相关代码进行详细阐释。 一、整体处理流程 当触发图像显示操作时,首要任务是判定图像的类型,即区分是视频还是图片。对于视频,需对其方向角实施调整并生成 …

推荐几款开源免费的 .NET MAUI 组件库

前言 今天大姚给大家推荐 3 款开源且免费的 .NET MAUI 组件库。 .NET MAUI介绍 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架&#xff0c;用于使用 C# 和 XAML 创建本机移动和桌面应用。使用 .NET MAUI&#xff0c;可从单个共享代码库开发可在 Android、iOS、macOS 和 …