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

微前端的使用和注意事项 - qiankun

一、为什么使用微前端

  • 微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用(Frontend Monolith)后,随之而来的应用不可维护的问题。
  • 微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用。
  • 微前端的核心价值在于 "技术栈无关”。

二、使用方式

  • https://qiankun.umijs.org/zh/guide/getting-started

三、主应用和微应用间通信

可参考:https://juejin.cn/post/6844904151231496200

  • qiankun 官方提供的通信方式

Actions 通信。

  • 使用Vuex进行状态管理

在做微前端集成时,将主应用的store共享给所有微应用

  1. 主应用向微应用传递store实例
registerMicroApps([{name: "chai-project",entry: "//localhost:8080",container: '#yourContainer',activeRule: "/chaiQiankunTest/ffff",props: {store //共享主应用的store实例}}],{beforeLoad: [app => {console.log("before load", app);}], // 挂载前回调beforeMount: [app => {console.log("before mount", app);}], // 挂载后回调afterUnmount: [app => {console.log("after unload", app);}] // 卸载后回调})
  1. 微应用使用主应用共享的store实例
import Vuex from 'vuex'
Vue.use(Vuex);
function render (props) {const store = props.store;// 在 render 中创建 VueRouter,可以保证在卸载微应用时,移除 location 事件监听,防止事件污染router = new Router({// 运行在主应用中时,添加路由命名空间 /chaiQiankunTest/ffffbase: window.__POWERED_BY_QIANKUN__ ? 'chaiQiankunTest/ffff' : '/',mode: 'history',routes});// 挂载应用instance = new Vue({router,store,//主应用共享的store实例render: (h) => h(App)}).$mount('#app');
}

四、注意事项

  • 微应用之间如何跳转

微应用之间的跳转,或者微应用跳主应用页面,直接使用微应用的路由实例是不行的,如 react-router 的 Link 组件或 vue 的 router-link,原因是微应用的路由实例跳转都基于路由的 base。

有以下几种办法可以跳转:

  1. history.pushState()
  2. 直接使用原生 a 标签写完整地址
<a href="http://localhost:8080/app1">app1</a>
  1. 修改 location href 跳转
window.location.href = 'http://localhost:8080/app1'
http://www.lryc.cn/news/329082.html

相关文章:

  • uniapp微信小程序消息订阅详解
  • git 查看文件夹结构树
  • 设计模式一详解
  • python 进程、线程、协程基本使用
  • SQLite3进行数据库各项常用操作
  • Debian GNU/Linux 安装docker与docker compose
  • 图片标注编辑平台搭建系列教程(2)——fabric.js简介
  • Debian linux版本下运行的openmediavault网盘 千兆网卡升级万兆
  • 前端 CSS 经典:grid 栅格布局
  • 多输入多输出通道
  • http响应练习—在服务器端渲染html(SSR)
  • C++(8): std::deque的使用
  • openwrt开发包含路由器基本功能的web问题记录
  • HarmonyOS ArkTS 骨架屏加载显示(二十五)
  • Ruoyi-Cloud-Plus_使用Docker部署分布式微服务系统_环境准备_001---SpringCloud工作笔记200
  • RN封装的底部向上弹出的弹出层组件
  • 基于深度学习YOLOv8+PyQt5的水底海底垃圾生物探测器检测识别系统(源码+数据集+配置说明)
  • SpringBoot集成WebSocket实现简单的多人聊天室
  • 如何使用固定公网地址远程访问内网Axure RP生成的网站原型web页面
  • 蓝桥杯习题
  • AMS概念以及面试相关整理
  • Vmware下减小Ubuntu系统占用系统盘大小
  • 面试题-Elasticsearch集群架构和调优手段(超全面)
  • python基础练习题6
  • Chrome 插件各模块使用 Fetch 进行接口请求
  • 内存可见性
  • Android room 在dao中不能使用挂起suspend 否则会报错
  • 【stable diffusion扩散模型】一篇文章讲透
  • 数据链路层之信道:数字通信的桥梁与守护者
  • SQL109 纠错4(组合查询,order by..)