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

qiankun微前端

qiankun微前端

  • 主项目
    • 1、安装qiankun
    • 2、main.js引入注册
  • 二、子项目
    • 1、安装@sh-winter/vite-plugin-qiankun
    • 2、main.js配置
    • 3、vite.config.js配置
  • 三、问题解决
  • 四、一键启动

主项目

1、安装qiankun

npm i qiankun -S

2、main.js引入注册

import { createApp } from 'vue'
import { createPinia } from 'pinia'import App from './App.vue'
import router from './router'const app = createApp(App)
app.use(createPinia())
app.use(router)
app.mount('#app')//引入
import { registerMicroApps, start } from 'qiankun';
// 注册微应用
registerMicroApps([{name: 'app_one',           //子项目名称entry: '//localhost:5173', // 子项目地址container: '#app_one',  // 在主项目中配置子项目将要显示的位置节点activeRule: '/',       //激活规则,可以通过设置不同的路由进行激活props: {} //传参       //子项目 主项目传参的通道}]);// 启动 qiankunstart({prefetch:'all' // 预加载});

二、子项目

1、安装@sh-winter/vite-plugin-qiankun

npm i @sh-winter/vite-plugin-qiankun

2、main.js配置

  • Vue3.x
import './assets/main.css'
import { createApp } from 'vue'
import App from './App.vue'import { exportLifeCycleHooks, qiankunWindow } from '@sh-winter/vite-plugin-qiankun/dist/helper'
function render() {const app = createApp(App)app.mount('#app1') //此处的id和html中一致,最好不要与主项目的一致,以免冲突
}
exportLifeCycleHooks({bootstrap() {// do nothing.},mount(props) {render(props.container);},unmount() {app?.unmount();}
})
if (!qiankunWindow.__POWERED_BY_QIANKUN__) {render();
}

3、vite.config.js配置

  • Vue3.x
import {qiankunPlugin, transformAssetUrl } from '@sh-winter/vite-plugin-qiankun'
import { name as packageName } from './package.json'
export default defineConfig({base: `/${packageName}/`,plugins: [vue({template: {compilerOptions: {nodeTransforms: [transformAssetUrl]}}}),qiankunPlugin({ packageName })],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}},})

三、问题解决

1、可能出现报错信息:
在这里插入图片描述
问题分析:一般实在网络较慢的时候出现,意思就是还没有加载好没法显示
问题解决:使用v-if绑定子项目显示的位置,在mounted后进行显示即可

四、一键启动

在两个项目同级目录执行npm init -y,并创建index.js文件
在这里插入图片描述
1、package.json配置:

{"name": "qiankun","version": "1.0.0","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","dev":"node ./index.js" //在根目录执行npm run dev走这里,去执行index.js文件中的方法},"keywords": [],"author": "","license": "ISC","description": "","dependencies": {"child_process": "^1.0.2"}
}

2、index.js文件内容

const childProcess = require('child_process')
const path = require('path')
// 配置每个应用的路径
const filePath = {'app_one': path.join(__dirname, './app_one'),main: path.join(__dirname, './vue-project')
}// cd 子应用的目录 npm run dev 启动项目
function runChild () {Object.values(filePath).forEach(item => {//配置项目启动命令childProcess.spawn(`cd ${item} && npm run dev`, { stdio: "inherit", shell: true })})
}
runChild()

启动成功:
在这里插入图片描述

最终效果
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【MySQL进阶之路】表结构的操作
  • live2d + edge-tts 优雅的实现数字人讲话 ~
  • 【在线+sdwebui】在线免费运行stable-diffusion-webui (无需配置环境)
  • 组件间通信高级
  • Windows平台RTSP|RTMP播放器如何实时调节音量
  • 使用 Fyne 构建 GUI 应用:设置标签文本和自增计数器
  • LLMs之Framework:Hugging Face Accelerate后端框架之FSDP和DeepSpeed的对比与分析
  • 【C++第十三章】Stack、Queue和Priority_Queue
  • Scikit-learn:用于数据挖掘和数据分析的简单而有效的工具,建立在 NumPy, SciPy 和 Matplotlib 上。
  • 【数学分析笔记】第2章第2节数列极限(2)
  • 《深入浅出算法竞赛》-递推与递归(笔记版)
  • Python之函数的使用
  • ChatGLM-6B 主要代码分析 RotaryEmbedding
  • vulnhub靶机 DC-9(渗透测试详解)
  • 顺丰科技25届秋季校园招聘常见问题答疑及校招网申测评笔试题型分析SHL题库Verify测评
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • ERLANG 网工修炼笔记 ---- UDP
  • HTML-表单
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Phpstorm怎样批量删除空行?
  • Spring框架之我见(三)——IOC、AOP
  • vue学习系列(二)vue-cli
  • 测试如何在敏捷团队中工作?
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 前端攻城师
  • 巧用 TypeScript (一)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 小程序开发中的那些坑
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​Redis 实现计数器和限速器的
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • !$boo在php中什么意思,php前戏
  • (~_~)
  • (2)Java 简介
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (利用IDEA+Maven)定制属于自己的jar包
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (顺序)容器的好伴侣 --- 容器适配器
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)Unity3DUnity3D在android下调试
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET : 在VS2008中计算代码度量值
  • .NET C# 操作Neo4j图数据库
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET中的Exception处理(C#)