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

续上篇 qiankun 微前端配置

上篇文章地址:微前端框架 qiankun 配置使用【基于 vue/react脚手架创建项目 】-CSDN博客

主应用:

src/main.js  配置:

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import { registerMicroApps, start } from 'qiankun';registerMicroApps([{name: 'react app', // app name registeredentry: 'http://localhost:3000/index.js',container: '#react',activeRule: '/react',sandbox: {strictStyleIsolation: true // 开启样式隔离}},{name: 'vue app',entry: 'http://localhost:8888/',container: '#vue',activeRule: '/vue',sandbox: {strictStyleIsolation: true // 开启样式隔离}},
]);start();
Vue.config.productionTip = falsenew Vue({router,render: h => h(App)
}).$mount('#app')

src/App.vue  配置:

<template><div>qiankun<router-link to="/vue">vue</router-link><router-link to="/react">react</router-link><router-view v-show="$route.name"></router-view><div id="vue"></div><div id="react"></div></div>
</template><style>
</style>

vue微应用:

src/main.js 配置:

import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
let instance = null;
function render(props) {console.log(props);// props 组件通信instance = new Vue({render: h => h(App)}).$mount('#app') // 这里是挂载到自己的HTML中,基座会拿到这个挂载后的HTML,将其插入进去
}if (!window.__POWERED_BY_QIANKUN__) { // 如果是独立运行,则手动调用渲染render();
}
if(window.__POWERED_BY_QIANKUN__){ // 如果是qiankun使用到了,则会动态注入路径// __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}// 根据 qiankun 的协议需要导出 bootstrap/mount/unmount
export async function bootstrap(props) {console.log(props);
}
export async function mount(props) {render(props);
}
export async function unmount(props) {console.log(props);instance.$destroy();
}

vue.config.js  配置:

module.exports = {devServer: {port: 8888,headers:{'Access-Control-Allow-Origin': '*' // 允许跨域}},configureWebpack: {output: {library: 'vue app',//这里的名称和主应用的name一致!!!libraryTarget: 'umd'}}
};

react微应用:

src/index.js  配置

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';function render(){ReactDOM.render(<React.StrictMode><App /></React.StrictMode>,document.getElementById('root'));
}
if(!window.__POWERED_BY_QIANKUN__){render();
}
export async function bootstrap(){}
export async function mount() {render()
}
export async function unmount(){ReactDOM.unmountComponentAtNode( document.getElementById('root'));
}

config/webpack.config.js  配置

如果没有可以看看我的另一篇文章:react 项目如何暴露 webpack配置文件-CSDN博客

在output配置下加入:

library: `react app`,//和主应用配置的name一致
libraryTarget: 'umd'

如图:

 vue:

 react:

http://www.lryc.cn/news/318649.html

相关文章:

  • AI日报:欧盟人工智能法案通过后行业面临合规障碍
  • 音视频如何快速转二维码?在线生成音视频活码的教程
  • 开源堡垒机Jumpserver安装教程
  • CentOS 7 socat命令端口转发 —— 筑梦之路
  • SeaTunnel 2.3.4 Cluster in K8S
  • 多模态学习 - 视觉语言预训练综述-2023-下游任务、数据集、基础知识、预训练任务、模型
  • Vite为什么比Webpack快
  • 因聚而生 数智有为丨软通动力携子公司鸿湖万联亮相华为中国合作伙伴大会2024
  • 724.寻找数组的中心下标
  • Selenium 是什么?简单了解Selenium
  • 钡铼技术有限公司R40路由器工业4G让养殖环境监控更高效
  • vue2 / vue3 路由(返回跳转)时判断 + 取消跳转
  • 【设计模式】Java 设计模式之代理模式(Proxy Pattern)
  • 逻辑数据平台的 NoETL 之道(内含QA)
  • 低代码与数智制造:引领软件开发的革新之旅
  • 安装 AWS Load Balancer Controller 附加组件
  • 性能测试什么时候开始?性能测试流程介绍
  • 爬虫逆向实战(36)-某建设监管平台(RSA,魔改)
  • DeepLearning in Pytorch|共享单车预测NN详解(思路+代码剖析)
  • 如何配置Apache的反向代理
  • Vue.js 应用实现监控可观测性最佳实践
  • Rust 语言中符号 :: 的使用场景
  • Java 获取笔记本WiFi网络基站信息的方法
  • Python如何处理拥塞控制
  • 【ArcGIS】栅格数据进行标准化(归一化)处理
  • 【CMake】顶层 CMakeList.txt 常用命令总结
  • mac启动elasticsearch
  • 【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )
  • JMeter 二次开发之环境准备
  • Laravel Class ‘Facade\Ignition\IgnitionServiceProvider‘ not found 解决