微前端架构

vue微前端qiankun框架学习到项目实战,基座登录动态菜单及权限控制 技术无关,独立开发,独立部署,增量升级,独立运行,微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用。 阅读详情

背景定义

微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用(Frontend Monolith)后,随之而来的应用不可维护的问题。这类问题在企业级 Web 应用中尤其常见。
微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。
微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立运行、独立开发、独立部署。

核心价值

  • 不限制技术栈:主框架不限制接入应用的技术栈,微应用具备完全自主权
  • 独立开发、独立部署:微应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新
  • 增量升级(拓展):在面对各种复杂场景时,我们通常很难对一个已经存在的系统做全量的技术栈升级或重构,而微前端是一种非常好的实施渐进式重构的手段和策略
  • 独立运行:每个微应用之间状态隔离,运行时状态不共享

微前端的框架

  1. iframe
    优缺点:最稳定的、上手难度最低的,但性能低;通信复杂;双滚动条;弹窗无法全局覆盖;加载是另一个window窗口,页面缩放时内部窗口内部缩放不同步;另外发送消息时需要在onload监听事件处理,会出现发送额外的噪声消息的情况只适合简单的页面渲染
  2. sigle-spa: 通过监听 url change 事件,在路由变化时匹配到渲染的子应用并进行渲染,这个思路也是目前实现微前端的主流方式
    优缺点:较基础,对原有项目的改造过多,成本太高
  3. 京东 microApp 官网 其他学习地址
    基于类WebComponent进行渲染的微前端框架,不同于目前流行的开源框架,它从组件化的思维实现微前端,旨在降低上手难度、提升工作效率。它是目前市面上接入微前端成本最低的框架,并且提供了JS沙箱、样式隔离、元素隔离、预加载、资源地址补全、插件系统、数据通信等一系列完善的功能。MicroApp与技术栈无关,也不和业务绑定,可以用于任何前端框架和业务。
    核心功能在CustomElement基础上进行构建,CustomElement用于创建自定义标签,并提供了元素的渲染、卸载、属性修改等钩子函数,我们通过钩子函数获知微应用的渲染时机,并将自定义标签作为容器,微应用的所有元素和样式作用域都无法逃离容器边界,从而形成一个封闭的环境。
  4. 阿里乾坤 qiankun 官网
    基于 single-spa 的微前端实现库,旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。

应用

1. 京东 microApp

1、安装依赖

yarn add @micro-zoe/micro-app 或者 npm i @micro-zoe/micro-app -S

2、在入口文件引入

// main.js
import microApp from '@micro-zoe/micro-app'

microApp.start()
3、在页面中嵌入微前端应用

<!-- 👇 name为应用名称,url为应用地址 -->
<micro-app name='my-app' url='http://localhost:3000/'></micro-app>

4.子应用
在webpack-dev-server的headers中设置跨域支持。

devServer: {
  headers: {
    'Access-Control-Allow-Origin': '*',
  },
},

以上即完成微前端的嵌入

1. 乾坤qiankun

主应用

  1. 安装 qiankun
$ yarn add qiankun # 或者 npm i qiankun -S
  1. 在主应用中注册微应用
import { registerMicroApps, start } from 'qiankun';

registerMicroApps([
  {
    name: 'react app', // app name registered
    entry: '//localhost:7100',
    container: '#yourContainer',
    activeRule: '/yourActiveRule',
  },
  {
    name: 'vue app',
    entry: { scripts: ['//localhost:7100/main.js'] },
    container: '#yourContainer2',
    activeRule: '/yourActiveRule2',
  },
]);

start();

当微应用信息注册完之后,一旦浏览器的 url 发生变化,便会自动触发 qiankun 的匹配逻辑,所有 activeRule 规则匹配上的微应用就会被插入到指定的 container 中,同时依次调用微应用暴露出的生命周期钩子。

如果微应用不是直接跟路由关联的时候,你也可以选择手动加载微应用的方式:

import { loadMicroApp } from 'qiankun';

loadMicroApp({
  name: 'app',
  entry: '//localhost:7100',
  container: '#yourContainer',
});

微应用
微应用不需要额外安装任何其他依赖即可接入 qiankun 主应用。

  1. 导出相应的生命周期钩子
    微应用需要在自己的入口 js (通常就是你配置的 webpack 的 entry js) 导出 bootstrap、mount、unmount 三个生命周期钩子,以供主应用在适当的时机调用。
/**
 * bootstrap 只会在微应用初始化的时候调用一次,下次微应用重新进入时会直接调用 mount 钩子,不会再重复触发 bootstrap。
 * 通常我们可以在这里做一些全局变量的初始化,比如不会在 unmount 阶段被销毁的应用级别的缓存等。
 */
export async function bootstrap() {
  console.log('react app bootstraped');
}

/**
 * 应用每次进入都会调用 mount 方法,通常我们在这里触发应用的渲染方法
 */
export async function mount(props) {
  ReactDOM.render(<App />, props.container ? props.container.querySelector('#root') : document.getElementById('root'));
}

/**
 * 应用每次 切出/卸载 会调用的方法,通常在这里我们会卸载微应用的应用实例
 */
export async function unmount(props) {
  ReactDOM.unmountComponentAtNode(
    props.container ? props.container.querySelector('#root') : document.getElementById('root'),
  );
}

/**
 * 可选生命周期钩子,仅使用 loadMicroApp 方式加载微应用时生效
 */
export async function update(props) {
  console.log('update props', props);
}

qiankun 基于 single-spa,所以你可以在这里找到更多关于微应用生命周期相关的文档说明。

  1. 配置微应用的打包工具
    除了代码中暴露出相应的生命周期钩子之外,为了让主应用能正确识别微应用暴露出来的一些信息,微应用的打包工具需要增加如下配置:

webpack:

const packageName = require('./package.json').name;

module.exports = {
  output: {
    library: `${packageName}-[name]`,
    libraryTarget: 'umd',
    jsonpFunction: `webpackJsonp_${packageName}`,
  },
};
前端开发中的微服务架构设计 前端服务化和小程序容器技术为前端应用带来了更好的组织结构、可维护性和可扩展性。这些技术的应用将促进前端开发的创新和发展,使团队能够更好地应对复杂的前端需求和业务挑战。通过将前端视为一个服务化的架构,我们能够构建出更强大、可靠且可持续的前端应用。微服务架构是一种软件架构模式,用于构建复杂应用程序。它将一个大型的单体应用程序拆分为一组更小、更独立的服务,每个服务都运行在自己的进程中,并通过轻量级的通信机制进行交互。每个服务都专注于解决特定的业务功能或服务,并且可以独立开发、部署和扩展。 阅读详情

相关推荐

【微前端】ReactJS实现微前端的代码架构

微前端是一种构建Web应用程序的架构方法,涉及将单块前端拆分为更小、更易管理的组件。这些更小的组件称为微前端,可以独立开发、测试和部署。这种方法对于大型复杂应用程序特别有用,因为它允许不同团队在不干扰彼此的情况下处理前端的不同部分。

欧阳天涵的专栏 1830

三大主流微前端框架,you love who?

大厂技术高级前端Node进阶点击上方程序员成长指北,关注公众号 回复1,加入高级Node交流群背景及相关信息微前端目前已经是大型前端应用中常见的技术,目前微前端常用的框架主要有三个:无界qiankun 乾坤MicroApp那么这三种微前端框架各有什么优缺点,在企业中进行大型应用开发时,应该如何进行选择呢?这篇文章讲由浅入深的告诉你答案!原文:https://juejin.cn/user/...

程序员成长指北 1万+

基于qiankun的微前端架构实践

本文分享了基于qiankun的微前端实践方案,通过React主应用集成Vue/React子应用,实现多技术栈协同开发。主应用负责整体布局和子应用管理,使用qiankun的registerMicroApps注册子应用,并通过全局状态管理实现主-子应用通信。子应用需导出bootstrap、mount、unmount生命周期函数,并配置webpack为UMD格式输出。该架构支持独立开发和部署,同时保持用户体验一致性,有效解决了大型前端应用的模块化拆分与整合问题。

Zhencode的博客 1978

前端架构--从入门到微前端

年中,自己做规划(2019Thinking(上) – 一个前端开发者的个人思考)时,考量了一段时间「微前端」,也关注到了《微前端的那些事儿》的文章,从而了解了作者「黄峰达」,也就购买了下面将要聊的书《前端架构:从入门到微前端》 本书围绕前端架构的实施,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。 设计:架构设计的模式,以及设计和制定前端工作流 基础:通过深入构...

李刚的学习专栏 5306

基于 React.js 的前端微前端架构

随着前端应用日益复杂化,传统的单体前端架构面临着维护困难、团队协作效率低下、技术栈升级成本高等诸多挑战。微前端架构应运而生,它借鉴了微服务的思想,将大型前端应用拆分为多个独立开发、独立部署的小型应用。微前端的基本概念和核心原则React.js 在微前端架构中的优势和适配方案主流微前端框架的技术实现对比实际项目中的架构设计和最佳实践微前端架构的性能优化和团队协作策略首先介绍微前端的基本概念和 React.js 的适配性然后深入分析微前端的核心实现原理和技术方案。

小白菜的博客 1047

SNAP实战:哨兵1 SLC数据预处理全流程详解(附避坑指南)

本文详细解析了使用SNAP软件处理哨兵1号SLC数据的完整预处理流程。从轨道精校正、辐射定标到多视与斑点滤波,再到地理编码,文章提供了清晰的操作步骤与核心逻辑,并重点分享了实践中的常见“坑”与解决方案,旨在帮助用户高效、准确地完成SAR数据预处理。

7up55的博客 1026

【架构】微前端

微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将单页面前端应用由单一的单体应用转变为把多个小型前端应用聚合为一的应用。各个前端应用还可以独立开发、独立部署。 微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用(Frontend Monolith)后,随之而来的应用不可维护的问题。这类问题在企业级 Web 应用中尤其常见。

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 1975

GD32F470实战:如何用EXMC+SDRAM为LVGL打造超大内存池(附完整配置代码)

本文详细介绍了如何利用GD32F470的EXMC接口与SDRAM深度整合,为LVGL构建高性能内存解决方案。通过硬件架构设计、EXMC接口配置、高级内存管理策略及LVGL性能优化技巧,开发者可以突破微控制器内存限制,实现高分辨率显示和复杂动画效果。附完整配置代码,助力嵌入式GUI开发。

rrr55的博客 546

微前端架构初探以及我的前端技术盘点

前言最近几年微前端一直是前端界的热门议题, 它类似于微服务架构, 主要面向于浏览器端,能将一个复杂而庞大的单体应用拆分为多个功能模块清晰且独立的子应用,且共同服于务同一个主应用。各个子...

趣谈前端 7772

初识Classic AUTOSAR开发工具链

在过去,软件和硬件之间具有很强的耦合性,阻碍了软件组件在不同硬件平台上的可移植性和重用性。而AUTOSAR作为汽车电子行业的标准,提供标准的软件接口定义,工程师可以根据需求将软件组件分配到汽车的ECU中,实现标准软件组件的可重用性。

怿星科技的博客 8092

Python爬虫实战:高效爬取华尔街日报文章的技术与代码详解

在当今信息爆炸的时代,金融数据和分析对于投资者、研究人员和企业决策者来说至关重要。华尔街日报(WSJ)作为全球最具影响力的财经媒体之一,其文章内容具有极高的价值。本文将详细介绍如何使用Python最新技术构建一个高效、稳定的华尔街日报文章爬虫,涵盖从基础到高级的各种技术要点。本文详细介绍了如何使用Python最新技术构建一个高效、稳定的华尔街日报文章爬虫。我们从基础爬虫实现开始,逐步添加了高级功能如分布式处理、反反爬虫策略、数据清洗和存储等。异步处理:使用asyncio和httpx实现高性能网络请求。

2201_76125261的博客 385

微前端架构详解

了解后端开发的同学应该听说过微服务架构,而微前端和微服务是一个道理,都是通过拆分单体应用程序为独立的、可以独立开发、部署和运行的小型应用来提高可维护性和团队的灵活性。独立开发和部署: 微前端允许不同的团队独立地开发和部署其部分,而不会干扰其他部分的开发和部署。独立运行时: 每个微前端部分都有自己的运行时环境,可以独立运行,也可以被组合成完整的应用程序。松耦合: 微前端的部分之间应该是松耦合的,彼此不依赖于具体的实现细节,可以用不同的技术栈实现。集成。

qq_43774332的博客 1728

Vue3 + 高德地图实现车辆电子围栏监控与报警

通过本文的实现,我们完成了一个通用的车辆电子围栏监控功能:支持多种围栏类型。支持进入/离开/双向报警。使用缓存机制避免重复告警。可与Vue3 + 高德地图无缝集成。在实际项目中,可以结合WebSocket 实时定位,实现车辆的实时监控 + 围栏告警系统🚀。

专注于前端开发与实战技巧,记录从零到一的学习与项目经验。分享 Vue3 / JavaScript / TypeScript / Flutter /Uniapp等前端技术,以及 性能优化、工程化、最佳实践。 1033

生产可用:是时候来一个微前端架构了!

微前端的场景域 在选择一个微前端方案之前,常常需要思考这样一个问题,我们为什么需要微前端。通常对微前端的诉求有两个方面,一是工程上的价值,二是产品上的价值。 对于工程上的价值,可以从一个三年陈的项目来看,如下所示, commit 的记录显示,第一次提交是 2016 年 8 月。 依赖树 dependencies: 打包体积: 虽然这个三年陈的项目看上去版本比较低,但仍然是相对主流的...

阿里云开发者 2652

Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 安装教程 2.1 安装OpenClaw 2.2 配置模型 2.3 对话 3. 后续使用步骤 4. 关闭程序

weixin_43178406的博客 11万+

华为OD机试 - 单词倒序(Python/JS/C/C++ 2025 A卷 100分)

华为OD机试 2025A卷题库疯狂收录中,刷题。

学Java,找哪吒 1226

一文读懂微前端架构

转载本文请注明出处:微信公众号EAWorld前端开发在程序猿中无疑是一个比较苦逼的存在,作为一个前端开发,你必须要掌握Javascript,HTML,CSS这三大基础。Javascript...

低代码开发,数据,中间件,企业架构原创技术分享 1134

基于STM32F1XX 、HAL库的BH1745NUC-E2环境光传感器驱动应用C语言程序设计

printf("BH1745制造商ID: 0x%02X\r\n", BH1745_ReadManufacturerID(&hbh1745));#define BH1745_ADDR_HIGH 0x39 // ADDR引脚接VDD。#define BH1745_ADDR_LOW 0x38 // ADDR引脚接地。= 0xE0) // BH1745制造商ID为0xE0。// 清除RGBC测量使能位。printf("BH1745初始化失败\r\n");

PP_Cottage的博客 278

【前端架构】微前端架构设计

一、微前端 微前端架构 应用自治 单一职责 技术栈无关 为什么需要微前端 遗留系统迁移 后端解耦,前端聚合 热闹驱动开发 二、微前端的技术拆分方式 路由分发式:通过HTTP服务器的反向代理功能,将请求路由映射到对应的应用上 前端微服务化:在不同的框架之上设计通信和...

880

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

什么是微前端架构?

微前端架构是一种前端架构模式,旨在将一个大型的Web应用程序拆分为更小、更独立的部分,每个部分可以由不同的团队开发、部署和维护。在微前端架构中,每个子应用程序可以独立开发、构建、测试和部署,同时也可以独立于其他子应用程序进行扩展和缩放。微前端架构的一个重要概念是应用程序的“微服务化”。这意味着将应用程序拆分为不同的功能模块,每个模块可以由不同的团队开发和维护。每个模块可以在自己的生命周期内独立开发和部署,并与其他模块进行通信和集成。微前端架构的另一个重要概念是“集成”。

Lydiasq的博客 1589

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

微前端架构在容器平台的应用

源宝导读:随着业务的发展,天际-星舟平台未来需要解决与其他云共创共建,跨团队高效协作等诸多问题,而星舟现有的技术架构将难以支撑。本文将介绍星舟平台如何通过向更先进的“微前端”架构演进落地...

dotNET跨平台 855

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

微前端有哪些架构?

无论采用哪种微前端架构,都需要解决一些共性的挑战,如微应用之间的通信、集成和部署等。同时,微前端架构也带来了诸多优势,如提高开发效率、增强系统的可维护性、支持技术多样性等,为构建可扩展的大型应用提供了一种灵活、高效的解决方案。微前端架构是一种现代Web应用的架构风格,它将前端应用分解为一组小型的、独立交付的前端应用。请注意,以上内容主要参考了现有的微前端框架和实践案例,并结合了前端开发的一般原则和经验进行归纳和总结。在实际应用中,具体的微前端架构可能会因项目的需求、团队的技术栈和偏好等因素而有所差异。

王铁柱666的博客 262
上一篇: vue实现浏览器桌面通知
下一篇: vue3+vite搭建项目
蜗牛与藤曼
博客等级 码龄9年 1万+粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值