vue2[webpack]中接入vue3[vite]的qiankun微前端服务

news/2025/2/22 23:12:11/

本文记录在 vue2[webpack]老项目中,使用qiankun.js微前端服务,接入vue3[vite]新项目。


vue2[webpack]技术项目可参考以前的文章: vue项目落地(qiankun.js)微前端服务-zhanghaoran’s blog


vue2为基座主应用; vue3为子应用。


改造vue2老项目为基座主应用

下载qiankun.js

npm i qiankun -S

在合适的地方给子应用预留位置

我是在layout/default.vue中 下添加的, 也可以在index.html中添加,具体依据需求

// ~/layout/default.vue<template><div><head />< main><siderbar /><router-view /><div id="subApp"></div>// 子应用容器位置,必须指定</main><footer /</div>
</template>// or html:
// ~/public/index.html....
<div id="app"></div>
<div id="subApp"></div>	// 子应用容器位置,必须指定

配置 main.js

// ~/src/main.js
import App from './App.vue'
import Router from './router'
// 导入qiankun.js
import {registerMicroApps,start} from "qiankun";new Vue({Router,render: (h) => h(App)
}).$mount('#app')// 注册子应用
registerMicroApps([{name: 'subAPP',            	// 子应用名称entry: '//127.0.0.1:9000/',    // 子应用入口container: '#subAPP',    	// 子应用所在容器activeRule: '/#/subAPP',       // 子应用触发规则(路径)},
]);// 开启服务
start()

配置子应用路由

// ~/src/router/index.jsrouter = [...{path: '/subAPP/:chapters*',name: 'subAPP',component: Layout,},...
]

:chapters*: 可以匹配所有子应用的路由

至此, 主应用基座部分配置完毕.



配置vue3[vite]子应用接入到微服务中

子应用不需要下载qiankun.js

因现在qiankun.js暂不支持vite,尝试几遍后,果断使用轮子:vite-plugin-qiankun

下载轮子

https://github.com/tengmaoqing/vite-plugin-qiankun

npm i vite-plugin-qiankun -S

配置vite.config.js

import qiankun from "vite-plugin-qiankun";export default defineConfig({plugins: [vue(),qiankun('subAPP', {useDevMode: true})],server: {port: 9000,headers: {'Access-Control-Allow-Origin': '*'}},
})

配置子应用的main.js

import {qiankunWindow,renderWithQiankun
} from 'vite-plugin-qiankun/dist/helper';
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';let app;function render(props) {const { container } = props;app = createApp(App);app.use(router).mount(container instanceof Element? (container.querySelector("#app")): (container));
}
if (!qiankunWindow.__POWERED_BY_QIANKUN__) {render({ container: "#app" });
} else {renderWithQiankun({mount(props) {console.log('--mount');render(props)},bootstrap() {console.log('--bootstrap');},update() {console.log('--update');},unmount() {console.log('--unmount');app?.unmount();}});
}

配置子应用路由router

// ~/src/router/index.jsimport { qiankunWindow } from 'vite-plugin-qiankun/dist/helper';
import { createRouter, createWebHistory } from "vue-router";
const routes = [{path: '/',component: () => import("../views/index.vue")},{path: '/a',component: () => import("../views/a.vue")}
]
const router = createRouter({// 微服务启动时:路由前缀 + 基座父应用的规则// 独自启动时: 路由为: /history: createWebHistory(qiankunWindow.__POWERED_BY_QIANKUN__ ? '/#/subAPP/' : '/'),routes,});export default router

子应用配置完毕。


上图看效果

在这里插入图片描述



相关链接

vite-plugin-qiankun: https://github.com/tengmaoqing/vite-plugin-qiankun

qiankun.js: https://qiankun.umijs.org/zh

之前的文章:https://blog.zhanghaoran.ren/article/html/vueXiangMuLuoDi(qiankun.js)WeiQianDuanFuWu.html



有问题请联系: 1441576268@qq.com

原文地址:https://blog.zhanghaoran.ren/article/html/vue2[webpack]ZhongJieRuvue3[vite]DeqiankunWeiQianDuanFuWu.html


http://www.ppmy.cn/news/6980.html

相关文章

2022年学习机器人和人工智能的一些体会

前些日子开会&#xff0c;很受启发&#xff0c;比如有大佬指出&#xff1a; 总结&#xff1a;一般是高屋建瓴&#xff0c;通常是级别高的总揽全局&#xff0c;小虾虾不适用&#xff1b;感想和体会&#xff1a;小虾虾们学习完大佬讲话之后&#xff0c;自己的收获。 这才发现写博…

K8S——调用亲和性

k8s-调度亲和性 简介 Scheduler 是 kubernetes 的调度器&#xff0c;主要的任务是把定义的 pod 分配到集群的节点上。听起来非常简单&#xff0c;但有 很多要考虑的问题&#xff1a; 公平&#xff1a;如何保证每个节点都能被分配资源资源高效利用&#xff1a;集群所有资源最…

37.卷积神经网络(LeNet)的代码实现(在colab上)

ps&#xff1a;在教材上直接打开colab&#xff0c;运行原来的代码!pip install githttps://github.com/d2l-ai/d2l-zhrelease # installing d2l是会报错的&#xff0c;改成这句代码&#xff0c;可以正确运行&#xff1a;!pip install d2l0.14.&#xff0c;直接制定了d2l的版本 …

大数据分析案例-基于决策树算法构建员工离职预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

LabVIEW如何减少下一代测试系统中的硬件过时5

LabVIEW如何减少下一代测试系统中的硬件过时5 Steps to Replace Instruments Performance Requirements The important consideration to make when replacing instruments isthat the replacements must meet your requirements, usually by having equal orbetter measure…

编译原理——求短语、直接短语(简单短语)、素短语、句柄

先介绍一下短语、直接短语&#xff08;简单短语&#xff09;、素短语、句柄怎么求&#xff1a;这个图是核心 然后通过一些例题&#xff0c;实战一下&#xff1b; 根据上面介绍的概念、求法&#xff0c;应用一下即可&#xff1b; 例题1 短语&#xff1a;注意对于每一个子树&a…

c++类 赋值、拷贝、移动拷贝和移动赋值构造函数

class AAA { public: AAA() : m_pData( new int ) { *m_pData 0; } virtual ~AAA() { if (nullptr ! m_pData) delete m_pData; } AAA(const AAA& aaa)//拷贝构造函数 { std::cout << "拷贝构造…

基于Java(SSM框架)+MySQL 开发的停车场管理系统【100010071】

基于SSM的停车场管理系统的设计与实现 摘要 自从进入21 世纪以后&#xff0c;汽车产业迅速发展&#xff0c;伴随着人们生活程度的日益进步的人口的迅速增加&#xff0c;汽车的数量也如雨后春笋般在城市里不断的增加。这种现象&#xff0c;一方面是值得我们高兴的&#xff0c;…