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

基于vue3+webpack5+qiankun实现微前端

一 主应用改造(又称基座改造)

1 在主应用中安装qiankun(npm i qiankun -S)

 2 在src下新建micro-app.js文件,用于存放所有子应用。

const microApps = [// 当匹配到activeRule 的时候,请求获取entry资源,渲染到container中{name: 'micro-vue3',entry: '//localhost:40000',// 子应用的html入口activeRule: '/vue1', // 路由匹配规则container: '#micro-vue3', // 渲染到哪里props: {},},
];export default microApps;

 3 改造vue.config.js,允许跨域访问子应用页面

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({transpileDependencies: true,devServer: {port: 8000,headers: {// 重点1: 允许跨域访问子应用页面'Access-Control-Allow-Origin': '*',},},
})

 4 改造main.js

 

import { createApp } from 'vue'
import App from './App.vue'
import router from './router/router';
import ElementPlus from 'element-plus'; //element-plus
import 'element-plus/dist/index.css'; //element-plus
import { registerMicroApps, start } from 'qiankun';
import microApps from './micro-app';
// createApp(App).use(router).use(ElementPlus).mount('#app');
let app = createApp(App);
app.use(router);
app.use(ElementPlus);
app.mount('#app');// 注册子应用
registerMicroApps(microApps, {//还有一些生命周期 如果需要可以根据官网文档按需加入beforeMount(app) {console.log('挂载前', app);},afterMount(app) {console.log('卸载后', app);},
});
console.log("hello 主应用")
// 启动子应用
start({prefetch: false, //取消预加载sandbox: { experimentalStyleIsolation: true }, //沙盒模式
});

5 在App.vue中写响应跳转子应用(根据自己的项目找对应位置写,不局限于App.vue)

 

<template><el-menu :router="true" mode="horizontal"><!-- 子应用的跳转路径 --><el-menu-item index="/index">主应用 main</el-menu-item><el-menu-item index="/vue1">子应用 vue3</el-menu-item></el-menu><!-- 主应用路由渲染出口 --><router-view /><!-- 子应用的容器 --><!-- 微前端子应用渲染出口 --><div id="micro-vue3"></div>
</template><script>
export default {name: 'App',setup() {return {};},
};
</script><style>
html,
body,
#app {width: 100%;height: 100%;margin: 0;
}
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: #2c3e50;
}
</style>

需要注意这里的对应关系:

 二 子应用改造

1 在src下新建public-path.js

if (window.__POWERED_BY_QIANKUN__) {__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}

2 改造main

 

import { createApp } from 'vue'
import App from './App.vue'
import './public-path'; // 注意需要引入public-path
// createApp(App).mount('#app')
let instance = null;
console.log("hello 子应用")
function render({ container } = {}) {instance = createApp(App);// instance.use(router);// instance.use(store);instance.mount(container ? container.querySelector('#app2') : '#app2');
}
// 如何独立运行微应用?
if (!window.__POWERED_BY_QIANKUN__) {render();
}
// 子应用接入 qiankun
//  1 导出三个必要的生命周期钩子函数
// bootstrap 渲染之前
// mount 渲染函数
// unmount 卸载函数
export async function bootstrap() {// 启动console.log("启动")
}
export async function mount() {console.log("挂载")// 挂载render();
}
export async function unmount() {// 例如从一个子应用到另一个子应用 需要先卸载后再加载,防止内存泄露console.log("卸载")// 卸载instance.unmount();instance = null; // instance.$destroy();// instance.$el.innerHTML = ''// instance = null
}

3 改造vue.config.js

const { defineConfig } = require('@vue/cli-service')
const { name } = require('./package');
console.log("hello 子应用")
module.exports = defineConfig({transpileDependencies: true,devServer: {port: 40000,headers: {'Access-Control-Allow-Origin': '*', //开发时增加跨域 表示所有人都可以访问我的服务器},},configureWebpack: {output: {// 必须打包出一个库文件library: `${name}-[name]`,// 库格式必须是 umdlibraryTarget: 'umd', // 把子应用打包成 umd 库格式// jsonpFunction: `webpackJsonp_${name}`,chunkLoadingGlobal: `webpackJsonp_${name}`,},},
})

 三 改造后效果

 

 

相关文章:

基于vue3+webpack5+qiankun实现微前端

一 主应用改造&#xff08;又称基座改造&#xff09; 1 在主应用中安装qiankun(npm i qiankun -S) 2 在src下新建micro-app.js文件&#xff0c;用于存放所有子应用。 const microApps [// 当匹配到activeRule 的时候&#xff0c;请求获取entry资源&#xff0c;渲染到containe…...

华为OD真题--完美走位--带答案

2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09;or2023年华为OD真题机考题库大全-带答案&#xff08;持续更新&#xff09; 题目描述 输入一个长度为4的倍数的字符串Q,字符串中仅包含WASD四个字母。 将这个字符串中的连续子串…...

【AI】《动手学-深度学习-PyTorch版》笔记(十四):多层感知机

AI学习目录汇总 1、多层感知机网络结构 1.1 线性模型:softmax回归 在前面介绍过,使用softmax回归来处理分类问题时,每个输出通过都一个仿射函数计算,网络结构如下,输入和输出之间为全链接层: 1.2 多层感知机 多层感知机就是在输入和输出中间再添加一个或多个全链接…...

本地开发 npm 好用的http server、好用的web server、静态服务器

好用的web server总结 有时需要快速启动一个web 服务器&#xff08;http服务器&#xff09;来伺服静态网页&#xff0c;安装nginx又太繁琐&#xff0c;那么可以考虑使用npm serve、http-server、webpack-dev-server。 npm serve npm 的serve可以提供给http server功能&#…...

Gradio入门,并搭个鸡兔同笼问题小应用,附源码(MindOpt)

应用链接&#xff1a; https://979427749bc9ceec34.gradio.live 是公开访问链接&#xff0c;3天有效。 在modelscope中的创空间发布长期有效:https://modelscope.cn/studios/wuyoy520v01/MindOpt_Chicken-with-rabbit-cage/summary。 应用图如下&#xff0c;源代码见正文。 知…...

redis核心知识点简略笔记

value数据类型 string 二进制安全 list 有序、可重复 set 无序、不重复 hash field-value的map sorted set 不重复、通过double类型score分数排序 场景 string 计数器缓存分布式锁访问频率控制分布式session hash 购物车等对象属性灵活修改 list 定时排行榜 set 收藏 sorte…...

消息中间件 —— 初识Kafka

文章目录 1、Kafka简介1.1、消息队列1.1.1、为什么要有消息队列&#xff1f;1.1.2、消息队列1.1.3、消息队列的分类1.1.4、p2p 和 发布订阅MQ的比较1.1.5、消息系统的使用场景1.1.6、常见的消息系统 1.2、Kafka简介1.2.1、简介1.2.2、设计目标1.2.3、kafka核心的概念 2、Kafka的…...

Ceph集群安装部署

Ceph集群安装部署 目录 Ceph集群安装部署 1、环境准备 1.1 环境简介1.2 配置hosts解析(所有节点)1.3 配置时间同步2、安装docker(所有节点)3、配置镜像 3.1 下载ceph镜像(所有节点执行)3.2 搭建制作本地仓库(ceph-01节点执行)3.3 配置私有仓库(所有节点执行)3.4 为 Docker 镜像…...

PXC基于docker搭建mysql集群全过程

之前用mysql自带的bin-log复制&#xff0c;总是因为各种冲突&#xff0c;同步就阻塞掉了&#xff0c;一旦阻塞掉了&#xff0c;不主动发现&#xff0c;同步就终止了。还需要想办法手动去处理。所以考虑重新搭建集群。发现PXC方案不错&#xff0c;可以上两台&#xff0c;对服务器…...

项目知识点记录

1.使用druid连接池 使用properties配置文件&#xff1a; driverClassName com.mysql.cj.jdbc.Driver url jdbc:mysql://localhost:3306/book?useSSLtrue&setUnicodetrue&charsetEncodingUTF-8&serverTimezoneGMT%2B8 username root password 123456 #初始化链接数…...

【HDFS】ListenableFuture在HDFS中的应用

本文主要介绍以下内容: ListenableFuture提供的功能和基本使用方法;AsyncLogger、IPCLoggerChannel(它是AsyncLogger的子类)QuorumCall类一、ListenableFuture的基本使用 ListenableFuture 是 Guava 库中提供的一个接口,它扩展了 JDK 中的 Future 接口,并添加了异步任务…...

Databend 开源周报第 105 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 Databend 轻量级…...

ArcGISPro随机森林自动化调参分类预测模型展示

更改ArcGISPro的python环境变量请参考文章 ArcGISPro中如何使用机器学习脚本_Z_W_H_的博客-CSDN博客 脚本文件如下 点击运行 结果展示 负类预测概率 正类预测概率 二值化概率 文件夹&#xff08;模型验证结果&#xff09; 数据集数据库 ROC曲线 由于个人数据量太少所以…...

科技资讯|苹果手机版Vision Pro头显专利曝光,内嵌苹果手机使用

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的清单&#xff0c;苹果公司近日获得了一项头显相关的技术专利&#xff0c;展示了一款亲民款 Vision Pro 头显&#xff0c;可以将 iPhone 放置在头显内部充当屏幕。 根据patentlyapple 媒体报道&#xff0c;这是苹果公司…...

Linux服务器映射到本地磁盘

内容来自网友博客。 把linux服务器上的文件夹映射到本地作为一个磁盘来访问&#xff0c;步骤如下 一. samba的安装: sudo apt-get install samba // (sudo get temp root auth) sudo apt-get install smbfs //旧版本 sudo apt-get install cifs-utils //新版本 上…...

条条大路通罗马系列—— 使用 Hiredis-cluster 连接 Amazon ElastiCache for Redis 集群

前言 Amazon ElastiCache for Redis 是速度超快的内存数据存储&#xff0c;能够提供亚毫秒级延迟来支持 实时应用程序。适用于 Redis 的 ElastiCache 基于开源 Redis 构建&#xff0c;可与 Redis API 兼容&#xff0c;能够与 Redis 客户端配合工作&#xff0c;并使用开放的 Re…...

元宇宙核能发电VR模拟仿真实训教学为建设新型电力系统提供重要支撑

随着“碳达峰、碳中和”目标与建设新型能源体系的提出&#xff0c;在元宇宙环境下建设电力系统是未来发展的趋势。以物联网、区块链、数字孪生、混合现实等技术为主要代表的元宇宙技术体系及其在电力和能源系统中的应用&#xff0c;将会促进智能电网的发展&#xff0c;为建设新…...

我的Python教程:使用Pyecharts画柱状图

Pyecharts是一个用于生成 Echarts 图表的 Python 库。Echarts 是一个基于 JavaScript 的数据可视化库&#xff0c;提供了丰富的图表类型和交互功能。通过 Pyecharts&#xff0c;你可以使用 Python 代码生成各种类型的 Echarts 图表&#xff0c;例如折线图、柱状图、饼图、散点图…...

应用冷启bindservice耗时

背景&#xff1a;sdk初始化的时候耗时过长&#xff0c;而sdk,init方法中只有一个bindservice及一些变量的初始化&#xff0c;却好事100ms 查看trace发现binderservice耗时只占init耗时的一小部分&#xff0c;但是init逻辑并没有其他代码。 这里servicebind返回快的另一原因是se…...

资金情况:每周一次投资和消费总结

以下是每周一次投资和消费总结的最佳方法&#xff1a; 撰写一份清单&#xff1a;在整个星期中记录你的投资和消费行为&#xff0c;包括花费、支出和收入。 分类整理&#xff1a;将你的花费和支出分成不同的类别&#xff0c;例如餐饮、购物、交通等等。这将帮助你更好地了解你的…...

深入理解 C++ 内存模型与对象底层机制:this 指针的秘密

很多初学者在学习 C 面向对象时&#xff0c;脑海里都会有一个疑问&#xff1a;“既然每个对象都有自己的变量&#xff0c;那类里面的函数是放在哪里的&#xff1f;如果函数是共享的&#xff0c;它怎么知道我现在操作的是哪个对象的数据&#xff1f;”今天&#xff0c;我们就从 …...

AD9364 SPI配置避坑指南:从寄存器0x3DF到0x015,手把手带你走通初始化流程

AD9364 SPI配置避坑指南&#xff1a;从寄存器0x3DF到0x015&#xff0c;手把手带你走通初始化流程 第一次接触AD9364的SPI配置时&#xff0c;我盯着密密麻麻的寄存器列表和长达数十页的配置流程&#xff0c;感觉像是面对一座难以攀登的高山。经过多次调试和失败后&#xff0c;终…...

高通Ride平台镜像刷写实战:从QFIL到Fastboot的路径选择与避坑指南

1. 高通Ride平台镜像刷写入门指南 第一次接触高通Ride平台的开发者&#xff0c;往往会被各种刷写工具搞得晕头转向。作为一个在这个领域摸爬滚打多年的老手&#xff0c;我完全理解这种困惑。记得我第一次刷写Ride平台时&#xff0c;花了整整两天时间才搞明白QFIL和Fastboot的区…...

C/C++构建共享库时链接静态库报错:dangerous relocation: unsupported relocation 的根源与解决

1. 为什么会出现"dangerous relocation"错误&#xff1f; 当你尝试将一个静态库链接到共享库&#xff08;动态库&#xff09;时&#xff0c;如果遇到"dangerous relocation: unsupported relocation"这样的错误信息&#xff0c;这通常意味着你的静态库没有…...

Win10/Win11双硬盘用户必看:如何将系统盘从MBR迁移到GPT并启用UEFI引导(数据盘不动)

双硬盘用户系统盘MBR转GPT实战指南&#xff1a;零风险保留数据盘配置 你是否遇到过这样的困扰——开机速度越来越慢&#xff0c;系统响应迟钝&#xff0c;而那块装着重要数据和游戏文件的HDD硬盘又不敢轻易动它&#xff1f;对于使用SSDHDD双硬盘配置的用户来说&#xff0c;这种…...

从投稿到接收:一份给Applied Soft Computing作者的完整Latex排版与提交保姆级教程

从投稿到接收&#xff1a;一份给Applied Soft Computing作者的完整LaTeX排版与提交保姆级教程 当你完成了一篇高质量的研究论文&#xff0c;准备向Applied Soft Computing投稿时&#xff0c;如何确保你的稿件在技术格式上完全符合期刊要求&#xff1f;这篇文章将带你走过从下载…...

Spring Boot REST 异常处理规范

Spring Boot REST 异常处理规范&#xff1a;构建健壮的后端服务 在现代Web开发中&#xff0c;RESTful API已成为前后端交互的核心方式。异常处理不当可能导致接口响应混乱&#xff0c;甚至泄露敏感信息。Spring Boot提供了一套完善的异常处理规范&#xff0c;帮助开发者高效管…...

除了收入健康,CFPS数据还能怎么玩?挖掘家庭追踪调查的隐藏研究场景

解锁CFPS数据的多维研究潜力&#xff1a;超越传统分析的创新视角 中国家庭追踪调查&#xff08;CFPS&#xff09;作为国内最具代表性的纵向社会调查项目&#xff0c;其价值远未被充分挖掘。当大多数研究者仍聚焦于经济收入和健康状况等常规维度时&#xff0c;那些隐藏在问卷角落…...

Windows Cleaner:三步解决C盘爆红的终极清理指南

Windows Cleaner&#xff1a;三步解决C盘爆红的终极清理指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为Windows电脑卡顿、C盘爆红而烦恼吗&#xff1f…...

轻松三步:为Mem Reduct内存监控工具设置中文界面

轻松三步&#xff1a;为Mem Reduct内存监控工具设置中文界面 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 如果你正…...