微前端Vue3+vite+qiankun接入子应用

微前端的主要逻辑就是在跳转路由的时候,对路由进行拦截,子应用匹配到的时候,就加载子应用 

主应用 :

安装依赖:npm install qiankun

在src文件下新建qiankun文件夹,在文件夹里面新建index.js

index.js:

import { registerMicroApps, start } from 'qiankun'
registerMicroApps([
    {
        name: 'vue-app', // 必须与微应用注册名字相同
        entry: 'http://127.0.0.1:5174', // 入口路径,开发时为微应用所启本地服务,上线时为微应用线上路径
        container: '#vue-app-container', // 微应用挂载的节点
        activeRule: '/child-vue', // 当访问路由为 /micro-vue 时加载微应用
        props: {
            msg: "来自主应用的值  // 主应用向微应用传递参数
        }
    },
])
start({
    prefetch:'all' // 预加载
})

 然后在main里面引入这个文件:import "./qiankun"

在App.vue里面挂在节点

<script setup></script>

<template>
  <div>
    我是主应用
    <div id="vue-app-container" />
  </div>
</template>

<style scoped></style>

微应用:

首先安装依赖,vite使用:npm install vite-plugin-qiankun

vite.config.js

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import qiankun from 'vite-plugin-qiankun'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    qiankun("vue-app", {
      // 微应用名字,与主应用注册的微应用名字保持一致
      useDevMode: true,
    }),
  ],
  server: {
    port: "5174",
  },
});

main.js

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import { renderWithQiankun, qiankunWindow } from 'vite-plugin-qiankun/dist/helper'

const initQianKun = () => {
    renderWithQiankun({
        // 当前应用在主应用中的生命周期

        mount(props) {
            console.log(props);
            render(props.container)
            //  可以通过props读取主应用的参数:msg
        },
        bootstrap() { },
        unmount() { },
    })
}

const render = (container) => {
    // 如果是在主应用的环境下就挂载主应用的节点,否则挂载到本地
    const appDom = container ? container : "#app"
    createApp(App).mount(appDom)
}

// 判断当前应用是否在主应用中
qiankunWindow.__POWERED_BY_QIANKUN__ ? initQianKun() : render()

// createApp(App).mount('#app')

然后启动两个项目,打开主项目,在url后面添加:/child-vue,可以看到已经可以加载到子应用了

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值