当前位置: 首页 > news >正文

微前端qiankun打包部署

官网:API 说明 - qiankun

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

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

2.打包没有使用Nginx

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

主应用设置成hash

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

4.方法传递:

// 主应用
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)

1.主应用入口配置:
<div :id="component">
</div>
let container = component;//页面中div的组件id值,取个唯一的

let map = {}
if (process.env.NODE_ENV === 'development') {
  map = {
    file1: '8081',// 模块1
    file2: '8082', // 模块2
  };
} else if (process.env.NODE_ENV === 'production') {
  map = {
    file1: '/child/file1/index.html',// 模块1
    file2: '/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,//页面中的组件渲染div
  props: {// 传参,根据需要来
    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

相关文章:

  • js 跳出循环
  • Moonshot AI 新突破:MoBA 为大语言模型长文本处理提效论文速读
  • java项目引用sevenzipjbinding依赖报错问题
  • Linux基础开发工具的使用(apt、vim、gcc、g++、gdb、make、makefile)
  • 代码审计入门学习之sql注入
  • 持续记录FASTAI学习踩坑
  • 单片机 Bootloade与二进制文件的生成
  • 什么是电力交易员
  • 基于ffmpeg+openGL ES实现的视频编辑工具-添加滤镜(七)
  • Ecode在流程表单中插入自定义内容
  • 从CNN到Transformer:遥感影像目标检测的未来趋势
  • 语音控制热水器WTK69000离线语音识别芯片方案:迈向智能家居新时代
  • 一款社交媒体中查用户名的工具
  • 【Python】如何在 Linux/Windows 系统中设置 PYTHONPATH 环境变量
  • 什么是 Vue 的自定义事件?如何触发和监听?
  • js面试八股
  • Git笔记汇总,持续更新~
  • 快速提升网站收录:利用网站内链布局
  • 出行项目案例
  • C++ ——继承
  • 2025财政观察|长三角“三公”经费普降,钱要用在刀刃上
  • 国家林草局原党组成员、副局长李春良接受审查调查
  • 回望乡土:对媒介化社会的反思
  • 人民网评:守护健康证的“健康”,才有舌尖上的安全
  • 波兰关闭俄罗斯驻克拉科夫领事馆
  • 水豚“豆包”出逃已40天,扬州茱萸湾景区追加悬赏