什么是微前端?有什么好处?有哪一些方案?

微前端(Micro Frontends)

微前端是一种架构理念,借鉴了微服务的思想,将一个大型的前端应用拆分为多个独立、自治的子应用,每个子应用可以由不同团队、使用不同技术栈独立开发和部署,最终聚合为一个整体产品。


🧱 生活化类比示例:乐高拼图理解微前端

想象你在搭乐高城堡,原来需要所有人挤在一起拼同一块,谁手抖碰倒一块整个城堡都塌了。现在改用微前端,相当于:

  • 你把城堡分成城门、主楼、城墙几个独立部分

  • 小明团队用木头材料拼城门

  • 小红团队用塑料积木搭主楼

  • 你自己用 3D 打印做城墙

  • 最后像拼图一样组合起来,各部分还能随时单独升级改造

这样既避免了不同团队互相干扰,又能让擅长不同材料的人各展所长,整个城堡还不会因为某部分出问题就全盘崩溃。这就是微前端最接地气的理解方式。


🧐 什么是微前端?

微前端是一种将前端整体架构模块化、服务化、解耦的方案。

核心思想:

  • 主应用负责公共框架、路由分发;

  • 子应用负责独立业务模块(如订单管理、用户中心);

  • 各子应用可独立部署、独立运行、独立构建;

  • 技术栈可异构(如主应用用 Vue,子应用可用 React);


✅ 微前端的优势

🎯 微前端适用场景

  • 大型平台型项目(如企业管理后台、电商后台、SaaS 系统)

  • 多团队协作开发的大型前端项目

  • 系统重构期,需“渐进式”升级的项目

  • 多业务线共存,每个团队维护一个功能模块

举例:阿里巴巴的「统一运营平台」使用微前端将多个 B 端应用模块集成;腾讯企业微信多个业务线使用微前端统一接入主框架。


🛠️ 主流微前端解决方案

🔧 示例:qiankun 快速接入

主应用(Vue)接入子应用(React)

// 主应用 main.js
import { registerMicroApps, start } from 'qiankun';registerMicroApps([{name: 'reactApp',entry: '//localhost:3001', // 子应用入口container: '#subapp-container',activeRule: '/react', // 路由规则}
]);start();

<!-- 主应用容器 index.html -->
<div id="subapp-container"></div>

子应用设置动态资源路径(Webpack)

// 子应用 React - public-path.js
if (window.__POWERED_BY_QIANKUN__) {// 动态设置资源路径__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}


⚠️ 面临的挑战

⚙️ 性能优化建议

1. 避免重复打包公共依赖

将 Vue/React 等设为 external,主应用通过 CDN 注入:

// vue.config.js 或 webpack.config.js
externals: {vue: 'Vue',react: 'React','react-dom': 'ReactDOM',
}

2. 预加载子应用资源

start({prefetch: true, // 开启资源预加载
});

3. 缓存子应用

在主应用中缓存子应用实例,避免每次进入都重新 mount。

4. 异步加载子应用脚本

<script src="child-app.js" defer></script>

5. 全局事件通信 bus

// 主应用通信工具
import mitt from 'mitt';
export const eventBus = mitt();// 子应用中通信示例
eventBus.emit('login-success', userInfo);
eventBus.on('set-theme', (theme) => { ... });


✅ 总结

微前端为大型应用系统带来了极大的灵活性和可扩展性,适合多团队并行开发场景。但同时也带来了通信、样式、性能等方面的新挑战。通过合理的架构设计与技术选型,可以最大化其优势,构建现代化前端基础设施。

文章转载自:幼儿园技术家

原文链接:什么是微前端?有什么好处?有哪一些方案? - 幼儿园技术家 - 博客园

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

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

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

相关文章

【家政平台开发(33)】库存管理模块开发实战:从基础搭建到智能管控

本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…

Mysql个人笔记

Mysql个人笔记 sql基础书写规则和种类种类书写规则注释规则启动 DDL数据类型数据库的操作useshowcreatedrop 表的操作useshowcreate创建表复制表 dropalter Mysql的存储引擎 DMLselectselect语句like&#xff08;谓词&#xff09;where聚合函数&#xff1a;关于nullgroup byexi…

【重装系统】大白菜自制U盘装机,备份C盘数据,解决电脑启动黑屏/蓝屏

1. 准备 U 盘 U 盘容量至少 8G&#xff0c;备份 U 盘的数据&#xff08;后期会格式化&#xff09; 2. 从微软官网下载操作系统镜像 https://www.microsoft.com/zh-cn/software-download/windows11 3. 下载安装大白菜 https://www.alipan.com/s/33RVnKayUfY 4. 插入 U 盘&#…

各类神经网络学习:(十)注意力机制(第2/4集),pytorch 中的多维注意力机制、自注意力机制、掩码自注意力机制、多头注意力机制

上一篇下一篇注意力机制&#xff08;第1/4集&#xff09;待编写 一、pytorch 中的多维注意力机制&#xff1a; 在 N L P NLP NLP 领域内&#xff0c;上述三个参数都是 向量 &#xff0c; 在 p y t o r c h pytorch pytorch 中参数向量会组成 矩阵 &#xff0c;方便代码编写。…

uni-app初学

文章目录 1. pages.json 页面路由2. 图标3. 全局 CSS4. 首页4.1 整体框架4.2 完整代码4.3 轮播图 swiper4.3.1 image 4.4 公告4.4.1 uni-icons 4.5 分类 uni-row、uni-col4.6 商品列表 小程序开发网址&#xff1a; 注册小程序账号 微信开发者工具下载 uniapp 官网 HbuilderX 下…

VBA将Word文档内容逐行写入Excel

如果你需要将Word文档的内容导入Excel工作表来进行数据加工&#xff0c;使用下面的代码可以实现&#xff1a; Sub ImportWordToExcel()Dim wordApp As Word.ApplicationDim wordDoc As Word.DocumentDim excelSheet As WorksheetDim filePath As VariantDim i As LongDim para…

MySQL运行一段时间后磁盘出现100%读写

MySQL运行一段时间后磁盘出现100%读写的情况&#xff0c;可能是由多种原因导致的&#xff0c;以下是一些常见原因及解决方法&#xff1a; 可能的原因 1. 磁盘I/O压力过大[^0^]&#xff1a;数据量过大&#xff0c;数据库查询和写入操作消耗大量I/O资源。索引效率低&#xff0c…

【RabbitMQ】延迟队列

1.概述 延迟队列其实就是队列里的消息是希望在指定时间到了以后或之前取出和处理&#xff0c;简单来说&#xff0c;延时队列就是用来存放需要在指定时间被处理的元素的队列。 延时队列的使用场景&#xff1a; 1.订单在十分钟之内未支付则自动取消 2.新创建的店铺&#xff0c;…

Linux笔记之Ubuntu系统设置自动登录tty1界面

Ubuntu22.04系统 编辑getty配置文件 vim /etc/systemd/system/gettytty1.service.d/override.conf如果该目录或者文件不存在&#xff0c;进行创建。 在override.conf文件中进行编辑&#xff1a; [Service] ExecStart ExecStart-/sbin/agetty --autologin yourusername --no…

C++程序诗篇的灵动赋形:多态

文章目录 1.什么是多态&#xff1f;2.多态的语法实现2.1 虚函数2.2 多态的构成2.3 虚函数的重写2.3.1 协变2.3.2 析构函数的重写 2.4 override 和 final 3.抽象类4.多态原理4.1 虚函数表4.2 多态原理实现4.3 动态绑定与静态绑定 5.继承和多态常见的面试问题希望读者们多多三连支…

算法训练之动态规划(三)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

$_GET变量

$_GET 是一个超级全局变量&#xff0c;在 PHP 中用于收集通过 URL 查询字符串传递的参数。它是一个关联数组&#xff0c;包含了所有通过 HTTP GET 方法发送到当前脚本的变量。 预定义的 $_GET 变量用于收集来自 method"get" 的表单中的值。 从带有 GET 方法的表单发…

jQuery多库共存

在现代Web开发中&#xff0c;项目往往需要集成多种JavaScript库或框架来满足不同的功能需求。然而&#xff0c;当多个库同时使用时&#xff0c;可能会出现命名冲突、功能覆盖等问题。幸运的是&#xff0c;jQuery提供了一些机制来确保其可以与其他库和谐共存。本文将探讨如何实现…

MySQL 中的聚簇索引和非聚簇索引有什么区别?

MySQL 中的聚簇索引和非聚簇索引有什么区别&#xff1f; 1. 从不同存储引擎去考虑 在MySIAM存储引擎中&#xff0c;索引和数据是分开存储的&#xff0c;包括主键索引在内的所有索引都是“非聚簇”的&#xff0c;每个索引的叶子节点存储的是数据记录的物理地址&#xff08;指针…

Java从入门到“放弃”(精通)之旅——启航①

&#x1f31f;Java从入门到“放弃 ”精通之旅&#x1f680; 今天我将要带大家一起探索神奇的Java世界&#xff01;希望能帮助到同样初学Java的你~ (๑•̀ㅂ•́)و✧ &#x1f525; Java是什么&#xff1f;为什么这么火&#xff1f; Java不仅仅是一门编程语言&#xff0c;更…

三相电为什么没零线也能通电

要理解三相电为什么没零线也能通电&#xff0c;就要从发电的原理说起 1、弧形磁铁中加入电枢&#xff0c;旋转切割磁感线会产生电流 随着电枢旋转的角度变化&#xff0c;电枢垂直切割磁感线 电枢垂直切割磁感线&#xff0c;此时会产生最大电压 当转到与磁感线平行时&#xf…

文件上传做题记录

1&#xff0c;[SWPUCTF 2021 新生赛]easyupload2.0 直接上传php 再试一下phtml 用蚁剑连发现连不上 那就只要命令执行了 2&#xff0c;[SWPUCTF 2021 新生赛]easyupload1.0 当然&#xff0c;直接上传一个php是不行的 phtml也不行&#xff0c;看下是不是前端验证&#xff0c;…

【Pandas】pandas DataFrame head

Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行 pandas.DataFrame.head pandas.DataFrame.head 是一个方法&#xff0c;用于返回 DataFrame 的前几行。这个方法非常有用&#xff0c;特别是在需要快速查看 DataFrame 的前…

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(1):承上启下,继续上路

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(1):承上启下,继续上路 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)普通形(ふつうけい)と思います(2)辞書形ことができます(3)Vたことがあります。(4)Vた とき & Vる とき3、单词(1)日语单词(2…

码率自适应(ABR)相关论文阅读简报

标题&#xff1a;Quality Enhanced Multimedia Content Delivery for Mobile Cloud with Deep Reinforcement Learning 作者&#xff1a;Muhammad Saleem , Yasir Saleem, H. M. Shahzad Asif, and M. Saleem Mian 单位: 巴基斯坦拉合尔54890工程技术大学计算机科学与工程系 …