微前端之旅:探索Qiankun的实践经验


theme: devui-blue

image.png

什么是微前端?

微前端是一种前端架构方法,它借鉴了微服务的架构理念,将一个庞大的前端应用拆分为多个独立灵活的小型应用,每个应用都可以独立开发、独立运行、独立部署,再将这些小型应用联合为一个完整的应用。

核心思路:

  • 可独立开发、运行、部署
  • 模块化、可拓展

适用场景:

  • 大型的Web应用
  • 公司内部的平台系统
  • 对已有成熟项目的拓展

场景分析:

  1. 大型的web应用:

架构设计阶段的完全微前端架构

利用微前端的架构思想,将大型web应用逐步拆分设计成小型的、耦合性较低的并在后期方便扩容的块。以应对在业务不断升级和迭代的过程中,尽量在设计阶段规避带来的项目体积、改造成本等问题。从而优化和提升开发效率。

  1. 公司内部的平台系统:

由业务、数据等聚合需求发起的聚合式微前端架构

随着数据聚合平台往往承担了该领域下聚合的责任。在过去的平台,前端技术往往采用iframe和window.open等方式将业务内容融合到平台上,兼容性较差的体验慢慢被现代用户诟病。随着微前端的出现,这种格局正在慢慢改变。

  1. 对已有成熟项目的拓展

避免推翻重建或其他拓展性要求发起的嵌入式、拓展式微前端架构

一些项目使用的是老旧的技术,使用微前端之后,对于新功能的开发可以使用新的技术框架,这样避免了推翻重构,也避免了继续基于过时的技术进行开发。

如何进行微前端架构设计?

我们以完整的构建一个大型web应用为例,进行微前端的架构设计。

image.png

1. 技术选型

微前端的技术选型部分与常规的前端应用选型类似,在关注前端框架、构建工具、状态管理工具等的同时,需关注微前端框架的选型,如qiankun、single-spa、wujie等等。这里简单对比一下qiankun的优劣势分析:

优势

  • 基于 single-spa,拥有强大的社区支持和活跃的维护团队。
  • 提供了完善的生命周期钩子,便于主应用和子应用之间的通信和状态管理。
  • 支持多种前端框架,如 React、Vue、Angular 等,具有良好的框架无关性。
  • 提供了沙箱机制,确保子应用之间的隔离性,减少冲突。

劣势

  • 对于子应用的路由管理有一定的限制,需要遵循 qiankun 的路由规范。
  • 在处理复杂场景时,可能需要额外的配置和优化。
  • 对于某些特定框架(如Vue3)的支持可能存在延迟或不完善的情况。

2. 拆分规则

在整体项目的设计初期,首先根据业务将系统拆分为多个独立的小型应用,每个小型应用对应一个业务模块,可根据实际与产品端进行具体的划分。

3. 通信机制与数据共享

主应用与子应用的通讯机制与数据共享实际上就是参数如何传递的过程。

  • qiankun提供的通讯API
  • 本地存储Local Storage
  • vuex等状态管理

4. 构建部署

依赖现有的CICD流程分git仓库进行管理。

符合以下原则:

  • 主应用、子应用依照拆分规则独立git仓库
  • 打包、部署解耦
  • 主子之间、子子之间互不影响

5.UI 组件协同

  • 统一同基座子应用与主应用的UI库(包括版本)、框架版本
  • 统一封装前端组件上传私服、统一封装前端方法上传私服(components untils)或可copy联动

根据规范的代码范例才更容易的进行low code快速生成模板代码(增删改查等操作)

6.权限统一管理

  • 集成统一的token、菜单、角色、按钮等权限管理。

简化开发和维护:通过统一的鉴权体系,可以避免每个微前端应用都需要实现自己的用户认证和授权逻辑,简化开发和维护工作。由主应用统一获取token令牌,子应用通过载体中介获取令牌

7.监控、日志设计

  • 全局埋点监控:主应用级路由拦截根据应用前缀区分pv量。
  • 应用停留监控:根据Qiankun生命周期在挂载子应用钩子中触发计时器,在卸载子应用钩子中终止计时器,可对应用停留时长进行监控。
  • 日志推送:根据Qiankun生命周期挂载子应用时,获取该子应用预设的提示信息进行弹窗提醒。

8.关联大数据展示

主应用作为以业务单元为基础的子应用的载体,采集监控、埋点等数据汇总、分析、利用图形展示。

  • 方向1:数据驱动迭代、产品设计
  • 方向2:性能分析
  • 方向3:…

qiankun的部分代码基础

具体请参考qiankun官网:https://qiankun.umijs.org/zh/guide

image.png

准备

首先我们需要创建两个独立的 vue 项目,一个是主应用 shell(壳),一个是微应用 app1。 两个项目使用 vue-cli 分别初始化,并安装 qiankun

vue create micro-frontend-shell 
cd micro-frontend-shell 
npm install qiankun # 或 yarn add qiankun
vue create micro-frontend-app1
cd micro-frontend-app1
npm install qiankun # 或 yarn add qiankun

shell中配置四要素:

  • 应用名
  • 资源地址
  • 挂载div
  • 匹配前缀
// main.js
import { registerMicroApps, start } from 'qiankun';registerMicroApps([{name: 'app1',entry: '//localhost:8080',container: '#container',activeRule: '/app1'}
]);start();
<!-- App.vue -->
<div id="container"></div>

总结

微前端架构最大的优势在于它实现了系统模块的完全解耦。原来复杂得难以维护的单体代码,通过分解成独立的子应用模块后,每个子应用内部变得极其清晰和易管理。不同子应用可以由专精的团队独立负责,大大提升了开发效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/24117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淘宝天猫商品详情API接口详解

一、淘宝天猫商品详情API接口概述 淘宝天猫商品详情API接口是淘宝天猫开放平台提供的一项重要服务&#xff0c;它允许开发者通过API接口获取淘宝天猫商品的详细信息。这些信息包括但不限于商品标题、价格、描述、图片、销量、评价等。通过使用淘宝天猫商品详情API接口&#xf…

国密算法SM2的优势、原理和应用场景

随着信息化时代的到来&#xff0c;数据安全和网络空间的安全成为了国家安全的重要组成部分。密码学作为保障信息安全的关键技术&#xff0c;其重要性日益凸显。在这样的背景下&#xff0c;中国国家密码管理局推出了一系列自主的密码学算法&#xff0c;即国密算法&#xff0c;其…

12.【Orangepi Zero2】基于orangepi_Zero_2 Linux的智能家居项目

基于orangPi Zero 2的智能家居项目 需求及项目准备 语音接入控制各类家电&#xff0c;如客厅灯、卧室灯、风扇回顾二阶段的Socket编程&#xff0c;实现Sockect发送指令远程控制各类家电烟雾警报监测&#xff0c; 实时检查是否存在煤气泄漏或者火灾警情&#xff0c;当存在警情时…

SkyWalking之P0业务场景输出调用链路应用

延伸扩展&#xff1a;XX业务场景 路由标签打标、传播、检索 链路标签染色与传播 SW: SkyWalking的简写 用户请求携带HTTP头信息X-sw8-correlation “X-sw8-correlation: key1value1,key2value2,key3value3” 网关侧读取解析HTTP头信息X-sw8-correlation&#xff0c;然后通过SW…

探索未来制造,BFT Robotics引领潮流

“买机器人&#xff0c;上BFT” 在这个快速变化的时代&#xff0c;创新和效率是企业发展的关键。BFT Robotics&#xff0c;作为您值得信赖的合作伙伴&#xff0c;专注于为您提供一站式的机器人采购和自动化解决方案。 产品系列&#xff1a; 协作机器人&#xff1a;安全、灵活、…

Linux C语言:指针和指针变量

一、指针的作用 使程序简洁、紧凑、高效有效地表示复杂的数据结构动态分配内存能直接访问硬件能够方便的处理字符串得到多于一个的函数返回值 二、内存、地址和变量 1、内存地址 2、变量和地址 1&#xff09;变量用来在程序中保存数据 比如: int k 58; //声明一个int变…

基于JSP技术的社区疫情防控管理信息系统

你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;JSP 数据库&#xff1a;MySQL 技术&#xff1a;JSPJavaBeans 工具&#xff1a;MyEclipse、Tomcat、Navicat 系统展示 首页 用户注册与登录界…

2024-5-7 石群电路-26

2024-6-7&#xff0c;星期五&#xff0c;15:00&#xff0c;天气&#xff1a;阴转小雨&#xff0c;心情&#xff1a;晴。今天虽然是阴雨天&#xff0c;但是心情不能差哦&#xff0c;离答辩越来越近了&#xff0c;今天学完习好好准备准备ppt&#xff0c;加油学习喽~ 今日观看了石…

Faster R-CNN:端到端的目标检测网络

本文回顾了由微软研究人员开发的 Faster R-CNN 模型。Faster R-CNN 是一种用于物体检测的深度卷积网络&#xff0c;在用户看来&#xff0c;它是一个单一的、端到端的统一网络。该网络可以准确快速地预测不同物体的位置。为了真正理解 Faster R-CNN&#xff0c;我们还必须快速概…

《接口自动化测试框架》代码片段 - 接口请求封装

抛砖引玉 requests模块是Python中发送HTTP请求的强大工具&#xff0c;它以其直观易用的API和人性化的设计赢得了广泛赞誉。 这个模块不仅提供了丰富的功能来定制HTTP请求&#xff0c;如设置请求头、传递URL参数等&#xff0c;还能够自动处理许多底层细节&#xff0c;如Cookie管…

重庆公司记账代理,打造专业财务管理解决方案的领先企业

重庆公司记账代理&#xff0c;作为专业的财务管理服务提供商&#xff0c;我们的目标是为公司的经营管理和决策提供科学、准确的财务数据支持&#xff0c;我们通过长期的专业经验和对市场的深入理解&#xff0c;为您提供一站式的记账服务和财务咨询。 专业团队 我们拥有一支由经…

如何移动 hiberfil.sys 文件来减少C盘空间

如何移动 hiberfil.sys 文件来减少C盘空间 hiberfil.sys 文件是什么&#xff1f; hiberfil.sys 文件是 Windows 系统在开启休眠功能后自动生成的内存镜像文件。这个文件保存了系统休眠时的内存内容&#xff0c;以便我们唤醒电脑之后可以快速恢复到休眠前的状态。这个文件通常…

基于JSP技术的师生交流平台

你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;Myeclipse、B/S架构 系统展示 首页 管理员登录界面 学生信息管理…

Qwen2开源发布,各方位全面升级!

今天&#xff0c;通义千问团队带来了Qwen2系列模型&#xff0c;Qwen2系列模型是Qwen1.5系列模型的重大升级。包括了&#xff1a; 5个尺⼨的预训练和指令微调模型, 包括Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14B以及Qwen2-72B&#xff1b; 在中⽂英语的基础上&#xf…

Thermal-BST自动化工具在Flotherm建模中的应用与优势

引言 随着科技的不断发展&#xff0c;电子领域的需求也越来越广泛和多样化。然而&#xff0c;PCB板及其上的器件建模问题一直是电子工程师在设计过程中面临的重要挑战之一。软件中原有的PCB建模工具&#xff0c;转换出来的模型复杂&#xff0c;影响后期的网格划分&#xff0c;…

选择云桌面必看:影响云桌面性能的一些重要因素

当云桌面发展的如火如荼并被越来越多的人所追捧的时候&#xff0c;偶然在网上看到有人评论说云桌面太坑&#xff0c;说好的免维护和节省成本好像与想象中的还是不一样。云桌面真的太坑&#xff1f;那是因为你没做好这几点。 选择云桌面你该关注哪些指标&#xff1f; 其实从云…

查询SQL03:大的国家

问题描述 如果一个国家满足下述两个条件之一&#xff0c;则认为该国是 大国 &#xff1a; 面积至少为 300 万平方公里&#xff08;即&#xff0c;3000000 km2&#xff09;&#xff0c;或者 人口至少为 2500 万&#xff08;即 25000000&#xff09; 编写解决方案找出 大国 的国…

亚马逊测评自养号技术全攻略:一站式解决方案

在跨境电商这行&#xff0c;产品测评可是个大问题。如果你的商品销量少&#xff0c;评价也不多&#xff0c;那买家就很难注意到你的产品&#xff0c;更别提下单购买了。毕竟&#xff0c;大家都喜欢跟风买那些已经有很多人好评的产品&#xff0c;而不是冒险尝试一个全新的。 我们…

替代UCC28250抗干扰支持预偏置启动|支持半桥全桥|增强型驱动器

1. 产品特性(替代UCC28250) ➢ 支持预偏置启动 ➢ 死区时间可调的同步整流输出 ➢ 支持电压模控制和电流模控制 ➢ 支持源边控制和副边控制 ➢ 5V&#xff0c;精度3%电压输出 ➢ 软启动和打嗝恢复时间可调 ➢ 同步整流软启动阈值和时间可调 ➢ 斜坡补偿信号斜率可调 ➢…

2009年408真题解析

2009年408真题解析 【2009.1】为解决计算机主机与打印机之间速度不匹配问题&#xff0c;通常设置一个打印数据缓冲区&#xff0c;主机将要输出的数据依次写入该缓冲区&#xff0c;而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是。 A.栈 B.队列 C.树 D.图 …