微前端乾坤项目vue集成子系统流程

这篇具有很好参考价值的文章主要介绍了微前端乾坤项目vue集成子系统流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 在 src 目录新增 public-path.js:
if (window.__POWERED_BY_QIANKUN__) {
  __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}
  1. 入口文件 main.js 修改,为了避免根 id #app 与其他的 DOM 冲突,需要限制查找范围。
import './public-path';
import Vue from 'vue';
import VueRouter from 'vue-router';
import App from './App.vue';
import routes from './router';
import store from './store';

Vue.config.productionTip = false;

let router = null;
let instance = null;
function render(props = {}) {
  const { container } = props;
  router = new VueRouter({
    base: window.__POWERED_BY_QIANKUN__ ? '/app-vue/' : '/',
    mode: 'history',
    routes,
  });

  instance = new Vue({
    router,
    store,
    render: (h) => h(App),
  }).$mount(container ? container.querySelector('#app') : '#app');
}

// 独立运行时
if (!window.__POWERED_BY_QIANKUN__) {
  render();
}

export async function bootstrap() {
  console.log('[vue] vue app bootstraped');
}
export async function mount(props) {
  console.log('[vue] props from main framework', props);
  render(props);
}
export async function unmount() {
  instance.$destroy();
  instance.$el.innerHTML = '';
  instance = null;
  router = null;
}

3.打包配置修改(vue.config.js):

const { name } = require('./package');
module.exports = {
  devServer: {
    headers: {
      'Access-Control-Allow-Origin': '*',
    },
  },
  configureWebpack: {
    output: {
      library: `${name}-[name]`,
      libraryTarget: 'umd', // 把微应用打包成 umd 库格式
      jsonpFunction: `webpackJsonp_${name}`, // webpack 5 需要把 jsonpFunction 替换成 chunkLoadingGlobal
    },
  },
};

4.路由配置:

import { registerMicroApps, runAfterFirstMounted, start, addGlobalUncaughtErrorHandler } from 'qiankun';

// 定义微应用
const apps = [
  {
    name: 'subapp1', // 微应用的名称
    entry: '//localhost:8081', // 微应用的入口 URL
    container: '#subapp-container', // 微应用挂载的容器
    activeRule: '/subapp1', // 触发微应用的规则
  },
  {
    name: 'subapp2',
    entry: '//localhost:8082',
    container: '#subapp-container',
    activeRule: '/subapp2',
  },
  // 根据需要添加更多微应用
];

// 注册微应用
registerMicroApps(apps, {
  beforeLoad: app => {
    console.log('加载微应用前:', app.name);
  },
  beforeMount: [
    app => {
      console.log('挂载微应用前:', app.name);
    },
  ],
  afterUnmount: [
    app => {
      console.log('卸载微应用后:', app.name);
    },
  ],
});

// 第一个微应用挂载后执行的回调
runAfterFirstMounted(() => {
  console.log('第一个微应用已挂载');
});

// 设置全局未捕获错误处理器
addGlobalUncaughtErrorHandler(event => {
  console.error('全局未捕获错误:', event);
});

// 启动应用
start();

export default apps;
// 主系统的路由配置文件

import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

// 引入定义的微应用
import apps from './qiankun-config'; // 上面给出的包含微应用信息的文件

// 创建一个空的路由实例
const router = new Router({
  mode: 'history',
  routes: [
    // 其他主系统的路由...

    // 微应用的容器路由
    {
      path: '/subapps',
      component: {
        render: h => h('router-view'),
      },
      children: [],
    },
  ],
});

// 注册微应用的容器路由
apps.forEach(app => {
  router.options.routes[0].children.push({
    path: app.activeRule,
    name: app.name,
    component: () => import('@/views/MicroAppContainer'), // MicroAppContainer 是用于挂载微应用的组件
  });
});

export default router;

###主系统的url路由配置:

{
      name: '审批',
      id: '76aab9145475483b910e65f75,
      icon: '',
      path: '',
      activeRouters: [],
      auth: true,
      level: 1,
      children: [
        {
          name: '用户管理',
          activeRouters: [],
          auth: true,
          level: 2,
          id: '76aab9145475483b910e65f7',
          children: [
            {
              name: '用户列表',
              path: '/user/list',
              activeRouters: [],
              auth: true,
              level: 3,
              id: 'f5f974089e134bf39b86a348'
            }
          ]
        },
      ]
}

###子系统的url路由配置:文章来源地址https://www.toymoban.com/news/detail-790605.html

{
    path: '/user',
    component: () => import('@/user/list'),
    name: 'user',
    redirect: '/user',
    meta: {
      title: '用户管理',
      noCache: true,
      isTitleGoBack: true
    },
    children: [
      {
        path: '/user',
        name: 'user',
        component: () => import('@/user'),
        meta: {
          title: '用户列表',
          auth: true,
          activeMenu: '/work/user/list',
          noCache: true,
          mergeCode: 'user_list',
          isClearContentSpace: true,
          isTitleGoBack: true
        }
      },
    ]
  }

到了这里,关于微前端乾坤项目vue集成子系统流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入Android S (12.0) 探索Framework之输入子系统InputReader的流程

    第一篇 深入Android S (12.0) 探索Framework之输入系统IMS的构成与启动 第二篇 深入Android S (12.0) 探索Framework之输入子系统InputReader的流程 上一篇文章深入探索了 Android Framework 的输入系统 IMS 的构成与启动,对 IMS 的重要成员有了初步的理解,然后通过源码对 IMS 的整个启动流程进行

    2024年01月20日
    浏览(45)
  • 【智能家居项目】裸机版本——项目介绍 | 输入子系统(按键) | 单元测试

    🐱作者:一只大喵咪1201 🐱专栏:《智能家居项目》 🔥格言: 你只管努力,剩下的交给时间! 在这个专栏中,本喵要实现一个智能家居的小项目,先基于HAL库实现裸机版本,之后再实现一个RTOS版本,为了无缝实现从裸机到RTOS的移植以及维护,本喵会使用面向对象的思想,

    2024年02月08日
    浏览(42)
  • 【智能家居项目】裸机版本——认识esp8266 | 网络子系统

    🐱作者:一只大喵咪1201 🐱专栏:《智能家居项目》 🔥格言: 你只管努力,剩下的交给时间! 如上图整个智能家居程序总体框架图,还剩下网络子系统没有实现,以及最终的业务子系统没有实现。 如上图所示是乐鑫的多种网卡芯片,本喵使用的是其中的 ESP8266 ,具体性能

    2024年02月08日
    浏览(44)
  • 【智能家居项目】裸机版本——设备子系统(LED && Display && 风扇)

    🐱作者:一只大喵咪1201 🐱专栏:《智能家居项目》 🔥格言: 你只管努力,剩下的交给时间! 输入子系统中目前仅实现了按键输入,剩下的网络输入和标准输入在以后会逐步实现,今天先来实现设备子系统,包含LED设备(GPIO控制),风扇设备,OLED设备。 不同内核下是访问设

    2024年02月08日
    浏览(45)
  • Linux Mii management/mdio子系统分析之三 mii_bus注册、注销及其驱动开发流程

    (转载)原文链接:https://blog.csdn.net/u014044624/article/details/123303174       本篇是mii management/mdio模块分析的第三篇文章,本章我们主要介绍mii-bus的注册与注销接口。在前面的介绍中也已经说过,我们可以将mii-bus理解为mdio总线的控制器的抽象,就像spi-master、i2c-adapter一样。 本

    2024年01月16日
    浏览(43)
  • 适用于Linux的Windows子系统(在VScode中开发Linux项目)

    目录 前言 一、VScode扩展安装 二、挂载项目 1.连接 2.挂载(挂载之后项目终端就是Linux了) 3.愉快的搬砖开始了 4.前端如何通过内网 IP 本地访问到 Ubuntu 上? 总结 系列分为三章(从安装到项目使用): 一、适用于Linux的Windows子系统(系统安装步骤) 二、适用于Linux的Windows子

    2024年02月09日
    浏览(52)
  • 装饰工程|装饰工程管理系统-项目立项子系统的设计与实现|基于Springboot的装饰工程管理系统设计与实现(源码+数据库+文档)

    装饰工程管理系统-项目立项子系统目录 目录 基于Springboot的装饰工程管理系统设计与实现  一、前言 二、系统功能设计 三、系统实现 1、管理员功能实现 (2)合同报价管理 (3)装饰材料总计划管理 (4)客户管理 2、员工功能实现 (1)新增立项项目 (2)预算报价管理 (

    2024年02月20日
    浏览(41)
  • 微服务springcloud 02 创建项目中的三个service子系统,springcloud中注册中心Eureka介绍和把三个系统注册到Eureka中

    item service项目 01.使用springboot创建项目 02.选择依懒项 在这里插入代码片 spring web 03.添加sp01-commons依赖 在pom.xml文件中 04.修改application.yml ItemServiceImpl 05.创建接口实现类和controller类 ItemController 注:Spring MVC接受参数的几个注解,controller类中使用的参数注解 注解@GetMapping()=@

    2024年02月09日
    浏览(62)
  • win11安装的Ubuntu20.04子系统出现System has not been booted with systemd as init system (PID 1)问题的解决流程

    目录 一、前言 二、具体解决方法 第一步:切换root用户至自己账号 第二步:重新安装xrdp 第三步:重新配置端口并启动xrdp 第四步:打开远程连接窗口 第五步:点击连接,开始进入Linux子系统​编辑 第六步:切换到的账户的输入密码,并点击认证  第七步:成功进入Ubuntu20

    2024年02月16日
    浏览(48)
  • 【Windows 11】安装 Android子系统 和 Linux子系统

    本文使用电脑系统: 主要就是安装一个名为: 适用于Android的Windows子系统 (WSA)的软件。 首先在电脑的设置里面:时间和语言——语言和地区里面把地区改为美国。 然后到微软商店搜索: Amazon AppStore 。 安装亚马逊应用商店的时候,会首先提示你安装前面说的WSA。如此,我

    2024年02月09日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包