微前端调研及简析SPA实现原理

微前端框架调研 平时我们写项目的时候,都是用单页应用,用组件去拼接项目,随着我们的功能越来越复杂,我们会发现,项目中的组件越来越多,有时项目上线后,我们只想公开组件的某个部分,在更改组件后,会出现一个问题,我们需要把整个个项目重新打包,打包时间会比较长(可能修改了一个组件,打包却需要5-10分钟)。另外,组件的维护也非常不方便(可能有成千上百个组件)。除此之外,一个项目可能有多个团队去开发(比如按模块去划分,交给不同的团队去开发),这样可以面临人员众多,不好管理,团队技术栈不统一的问题。 阅读详情

最近对微前端讨论很多,梳理下自己对微前端的理解以及业内的一些微前端尝试反馈。

第零部分:自己对微前端理解

第一部分:基于Single-SPA微前端的一些demo

第二部分:Single-SPA微前端实现原理简析

第三部分:微前端业内一些总结

第零部分:自己对微前端理解

在判断自己项目是否需要使用微前端前,只要记住一句话即可:杀鸡焉用牛刀。

  • 如果项目很简单,请不要没有困难创造困难;
  • 如果项目太大,受够了iframe的种种掣肘,同时你还有一帮陪你肝新玩法的同事,能够准备好面对意想不到的快乐和意想不到的痛苦,深吸一口气,来,我们搞起。

在内部的两次讨论,能够看到不少优点,但同时也需要开发者有一个规范约束,才能发挥微前端的能力。有几个点需要注意:

  1. 状态隔离与否 - 状态共享需要规范
  2. 样式隔离 - 需要规范
  3. 注册应用 - 需要规范
  4. 三方依赖不统一
  5. 向下兼容方案

第一部分:Single-SPA微前端demo

  • single-spa-learn-kit:一个基于SPA的基础demo,可以直接run起来
  • 微前端 single-spa:图文并茂,方案有差异,提出几个坑点,留意下:
    • 在配置systemJs引用时会有跨域问题,这时候可以配置nginx的返回头进行解决,详情仓库见。
    • 在构建vue项目时,App.vue文件的主div id必须为你项目构建的id,因为第一次构建后你的html上的div会消失。


  • Single-Spa微前端实践:相同方案,有一张生命周期图很好。项目仓库:github.com/zhaiyy/singl。总结优点:
    敏捷性 - 独立开发和更快的部署周期: 开发团队可以选择自己的技术并及时更新技术栈。 一旦完成其中一项就可以部署,而不必等待所有事情完毕。
    降低错误和回归问题的风险,相互之间的依赖性急剧下降。
    更简单快捷的测试,每一个小的变化不必再触碰整个应用程序。
    更快交付客户价值,有助于持续集成、持续部署以及持续交付。


第二部分:Single-SPA微前端实现

如果第一部分的demo已经跑起来,希望较为完整的理解微前端,可阅读此节。如不关心如何实现,跳过此节即可。

了解Single-SPA实现,循序渐进,有几个关键的库需要了解下:


1. systemjs

虽然我们的重头戏是single-spa,但是在配置时候会发现都需要加载systemjs。systemjs是什么,简单来说,就是Dynamic ES module loader动态模块加载器,动态加载我们每个依赖的编译后的脚本文件。也正是因为system.js存在,你不会在代码中看到大量script脚本插入的痕迹。

那么问题又来了,我们加载资源都会创建script标签,为什么Systemjs的head中很清爽,答案就是systemjs留了一手,动态创建后又删除了script.


systemJSPrototype.instantiate = function (url, firstParentUrl) {
 const loader = this;
 return new Promise(function (resolve, reject) {
   const script = systemJSPrototype.createScript(url);
   script.addEventListener('error', function () {
     reject(Error('Error loading ' + url + (firstParentUrl ? ' from ' + firstParentUrl : '')));
   });
   script.addEventListener('load', function () {
     document.head.removeChild(script);
     // Note that if an error occurs that isn't caught by this if statement,
     // that getRegister will return null and a "did not instantiate" error will be thrown.
     if (lastWindowErrorUrl === url) {
       reject(lastWindowError);
     }
     else {
       resolve(loader.getRegister());
     }
   });
   document.head.appendChild(script);
 });
};


至此引出另外一个问题:动态删除script,全局的变量和函数还会保留吗?答案是肯定的。测试确认如此。

官方实例:systemjs-examples


2. single-spa-react

微前端常用的三个生命周期:bootstrap,mount,unmount,不同框架如何和single-spa关联,答案就是通过single-spa-react中间件实现这几个方法,从而支持下一步single-spa进行注册registerApplication


3. single-spa:

总算到了我们的重头戏,无论是乾坤,还是我们目前准备的方案,基本都离不开single-spa。

通过上一步的registerApplication注册,将所有的子模块加载到全局变量app数据中,并保存各种状态,用于后边的各种装载和卸载。

v2-b96936f206592901c27f51067226155e_b.jpg


single-spa关键的几步是:

  • 初始:默认劫持浏览器事件,等注册应用完成后执行
  • registerApplication注册应用,触发reroute
  • start初始化第一次执行,触发reroute
  • reroute根据不同情况,实现了加载、卸载、更改组件生命周期状态、并延迟执行执行浏览器事件

reroute执行时机:

  • registerApplication初始化注册应用
  • start第一次执行
  • 浏览器更新路由hashchange/popstate - urlReroute(navigation event)


第三部分:微前端业内一些总结

这部分一些是业内的方案介绍和总结,也有国外对微前端的争论。


1. 这可能是你见过最完善的微前端解决方案!

阿里系,介绍了使用JS Entry vs HTML Entry区别,提出使用的是html entry 方案。内容中有一段介绍微前端的实现:

由于我们的子应用都是 lazy load 的,当浏览器重新刷新时,主框架的资源会被重新加载,同时异步 load 子应用的静态资源,由于此时主应用的路由系统已经激活,但子应用的资源可能还没有完全加载完毕,从而导致路由注册表里发现没有能匹配子应用 /subApp/123/detail 的规则,这时候就会导致跳 NotFound 页或者直接路由报错。
这个问题在所有 lazy load 方式加载子应用的方案中都会碰到,早些年前 angularjs 社区把这个问题统一称之为 Future State : ui-router.github.io/gui。
解决的思路也很简单,我们需要设计这样一套路由机制:
主框架配置子应用的路由为 subApp: { url: '/subApp/**', entry: './subApp.js' },则当浏览器的地址为 /subApp/abc 时,框架需要先加载 entry 资源,待 entry 资源加载完毕,确保子应用的路由系统注册进主框架之后后,再去由子应用的路由系统接管 url change 事件。同时在子应用路由切出时,主框架需要触发相应的 destroy 事件,子应用在监听到该事件时,调用自己的卸载方法卸载应用,如 React 场景下 destroy = () => ReactDOM.unmountAtNode(container)。
要实现这样一套机制,我们可以自己去劫持 url change 事件从而实现自己的路由系统,也可以基于社区已有的 ui router library,尤其是 react-router 在 v4 之后实现了 Dynamic Routing 能力,我们只需要复写一部分路由发现的逻辑即可。这里我们推荐直接选择社区比较完善的相关实践 single-spa 。


2.Bifrost微前端框架及其在美团闪购中的实践

美团的应用,没有开源仓库,不过在两篇文章明显有一个不同观点,就是:是否需要不同子模块间的状态共享。bifost是支持的,上边的是讲究隔离。所以这类可以根据项目决定是否需要配置全局状态。


3.前端微服务在字节跳动的落地之路

访谈类

InfoQ:微前端最适合的落地场景是?
艾石光:前端微服务最明显最适合落地的场景是各种中后台项目,尤其是那些传统的 iframe 工程。实际试用过 frames 开发架构的同学会知道真的使用时,如何打造实用可理解的 deeplink 就已经很麻烦了。况且还有很多技术细节。比如那些底层复用、父子通信、session 打通、服务发现等。实际上已经默默承受了很多在微服务里解决得很好且最终效果可以好得多的问题。
前端微服务需要解决的难题涵盖了从集成开发环境到服务转移到部署和流量识别和承载的后端架构,具体涉及到的面很广,细节还是很多的。
我们团队把前端微服务抽象成了服务发现、运行隔离和环境一致三个方面,分别对应了了从开发到发布到线上运行的全部环节
InfoQ:采用微前端有哪些风险与挑战?
艾石光:前端微服务整体上的安全性和可控性还是比较不错的。但是如前面所述目前还没有标准和底层深入支持,所以也新产生了很多独特挑战需要去应对。我觉得最值得提的新引入风险还是来自开发调试过程。
我们认为 docker 等技术是服务端微服务的一个重要优势,容器技术的成熟使微服务在线上线下有非常一致的环境表现。而前端更接近非容器的、类似于各种 BaaS 的模式。像 firebase、GAE 等不借助容器的微服务体系都有整套的调试解决方案和运行监控数据回收方案,可以保证部署前有条件充分调试,也有可靠的测试,能先测试再部署。而微前端的本地开发的环境与调试用的代码和最终上线运行会有不小的区别。不仅如此,线上合并后的环境变化极快,其他平行的模块加起来更新频率非常高。所以这时发现和复现问题都是一个重要的环节。
我们也提供了很深入的解决方案,投入了很大的研发精力去应对这个挑战。我们建设了完整的开发链工具,比如配置代码的修复和消毒,还有融合云打包的脚本植入、自动化验证等。调试方面有整套的代理服务植入到开发环境的浏览器内,有独立的调试命令也有充分与 webpack-dev-server 结合的方式。这些一起实现了让使用者开发时,虽然写的代码仅仅是寄生在 masterpage 内的代码片段,但是开发体验几乎和传统的页面开发完全一致、开发环境看到的运行表现也几乎完全模拟线上。
其次是服务发现过程的模块上下线,是一个需要小心对待的需要极高可用性的中心系统。对此我们做了从 ETCD、Redis 到前端 localstorage 的多层容灾。为了更好地支撑流量,我们还在进一步尝试更多的部署架构。
另外我们也做了更详细的线上错误回收,并且打通到了用户反馈系统。在我们微服务框架里的 console log 都会被收集和整理,并且一起储存时会自动装载上 call stack。


4.每日优鲜供应链前端团队微前端改造

我最直白的感受是实现了项目级别的模块化,把不同项目变成了一个个模块来拼装组合,也就是说模块化从项目内提升到了项目本身
总结一下使用这套架构收到的好处,分为以下几点:
  • 缩小项目打包体积(平均每个子项目bundle不到100k),而整合后的公共资源只需加载一次,性能得到很大提升 (技术角度)
  • 用户体验更好,用户感知不到自己在使用多个不同的项目,更加平顺流畅 (产品角度)
  • 不同git的项目经过改造后,可以随意以项目内每个路由页面为单元拼装成一个新项目,产品灵活性本质上得到提升 (产品/技术角度)
  • 技术尝新,使用业界比较先进的微前端理念,几十个项目,成千上百个功能也能很好的分模块管理。 (管理角度)

也是有很多麻烦之处,需要消耗一定成本:

  • 因为多个vue实例在同一个document里,需要避免全局变量污染、全局监听污染、样式污染等,需要制定接入规范。
  • 使用了external抽离公共模块(比如Vue、Vue-router等)后,构造函数(或者Class)的污染也需要避免,比如Vue.mixin、Vue.components、Vue .use等等都需要做一些额外的工作去避免它们产生冲突。
  • 如果你也想要tab切换不刷新(使用keep-alive),那需要做的工作更多,主要是处理缓存,防止堆内存溢出(用chrome自带的performance monitor查看),还有项目间切换时路由钩子等等的处理。

不过跟收益比起来,这些成本就不算什么了~
最后要说一下,并不是所有场景都适合微前端,尤其是项目规模小、数量少的场景不建议使用。 什么样的场景适合这套架构呢?一般有以下特征:

  • 项目很多,规模很大,都是每个项目独立使用git此类仓库维护的、技术栈为vue/react/angular的这类应用
  • 需要整合到统一平台上,你正在寻找可能比iframe更合适的替代方案
  • 项目A有功能A1、A2、A3,项目B有功能B1、B2、B3,产品经理要你把A2、B1、B3组合成一个包含这些功能的新项目

可能你会问:为什么不一开始就把所有需要整合的功能用一个git来维护? 答:理想是美好的,谁也没有先知能力,随着公司业务发展亦或是组织架构的改变、人员更迭,以上场景是几乎不可避免的;我很难想象十多个项目的好几百个功能都在一个git里管理起来有多困难。 可能你还会问,那我把需要整合的业务整合成到一个git仓库呢? 答:这当然是一个解决办法,前提是整合的成本你能接受;并且将来还有这类需求呢?每次都要手动整合业务代码到同一个git仓库吗?假设所有人都只维护这个整合完的git仓库,并行的需求线多了,上线时间会不会拥挤?一个功能产生了致命错误,会不会所有功能跟着出问题?
最后我想说:
我们做这套框架的初衷是解决眼前的问题,然而发现它附带的潜力价值却比想象的多得多。


5.Microfrontends: the good, the bad, and the ugly 微前端之黄金三镖客:好家伙,丑家伙,坏家伙

国外对微前端的争论,只拉出基本论点。

  • The Good: Organizational Flexibility and alignment:分而自治,大项目拆分
    • Separate deploys for separate services
    • Ability of autonomous teams to independently iterate and innovate
    • Ability to organize teams around business units or products
  • The Bad: Operational Complexity操作复杂
    • Needing to have many different applications running in development to test a complete experience
    • Tracking and debug problems across the entire system
    • Dealing with versioning across the system
  • The Ugly: Performance, incoherent experiences,性能及不统一的体验
    • With each team making their own technology choices, browsers may end up downloading multiple frameworks & duplicate code
    • Users don’t experience your company or product in isolation. This is one of the arguments against completely scoping styles to component - the problem may be even worse with completely separated teams.
    • Some of the implementations of microfrontends (particularly looking at embedding iframes) can cause huge accessibility challenges.


6.其他:

李熠:微前端说明书


作者:李卫东【滴滴出行专家工程师】


滴滴云-为开发者而生 滴滴云使者

微前端沙箱隔离:JS 执行环境与样式隔离技术 本文通过技术原理剖析、实现路径对比、实践效果验证,系统阐述了微前端沙箱隔离的核心技术体系。未来需在安全性与性能之间寻求更优平衡,通过标准化建设与智能化升级,持续提升微前端架构的健壮性。在容器化部署过程中,如何实现跨模块的执行环境与样式资源的有效隔离,成为影响系统稳定性和安全性的关键命题。蚂蚁金服2023年技术方案显示,采用"进程隔离+内存标记"的混合模式,内存泄漏率降低至0.05%,且性能损耗控制在6%以内(据IDC预测,2025年采用高级沙箱隔离技术的企业,其系统稳定性将提升40%,运维成本降低35%( 阅读详情

相关推荐

single-spa-angularjs

单个spa-angularjs 已注册为应用程序的AngularJS(Angular 1)应用程序的通用生命周期挂钩。

微前端:single-spa是什么

微前端qiankun原理之single-spa

分享前端开发工程师的一些日常生活、前端知识点、职业发展、对一些问题的看法、感悟等等 1638

Angular-single-spa-portal-example.zip

Angular-single-spa-portal-example.zip,关于如何在单个网站上组合多个SPA的示例项目单个SPA门户示例,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面解决开发人员的web应用程序工作流。

微前端框架 之 single-spa 从入门到精通

本文深入剖析了微前端框架single-spa的实现原理,通过源码分析和手写简化版框架,揭示了其核心机制。文章首先搭建了包含子应用和基座应用的示例项目,详细介绍了配置过程。随后重点解析了single-spa的源码实现,包括应用状态管理、registerApplication工作原理和路由监听机制等核心内容。通过200行代码实现了简化版的single-spa框架,展示了应用加载、挂载和卸载的完整生命周期管理。最后分析了single-spa-vue如何适配Vue应用的生命周期。全文系统性地阐述了微前端框架的设计思

油墨香^-^的博客 1725

西门子机床数据采集实战:从828D到840DSL的CNC设备联网与实时监控

本文深入探讨了西门子机床数据采集的实战方案,重点解析了从828D到840DSL等CNC设备如何实现免授权、低成本联网与实时监控。文章通过对比不同型号系统的数据接口差异,提供了详细的配置步骤、核心数据点清单以及避坑指南,旨在帮助工厂技术人员经济高效地挖掘机床数据价值,提升生产管理效率。

weixin_29181861的博客 1327

嵌入式Linux Qt应用程序卡死问题分析记录

根据应用和系统层面的分析,软件功能异常和卡死现象的原因是系统控制台/dev/console阻塞导致依赖其的相关应用和命令异常。系统控制台/dev/console阻塞的原因还未确定,最近的软件版本和其他测试同事未出现该问题,所以很大可能是串口线的问题,待后续有进展了继续更新。

V10_x的博客 1642

前端单页面(SPA)和多页面(MPA)

了解单页面和多页面应用程序 1,单页面和多页面 SPA:( Single Page Application ) 单页面应用程序,例如:后台管理系统,整个应用中只有一个页面(index.html) MPA : ( Multiple Page Application )多页面应用程序,例如:门户网站,整个应用中有很多个页面(*.html) 单页面优点: 1. 加快页面响应速度,降低了对服务器的压力 传统的多页面应用程序,每次请求服务器返回的都是一整个完整的页面 ...

weixin_57519185的博客 1876

保姆级教程:用Seurat 5.0.1搞定单细胞测序数据从质控到细胞注释的全流程

本文提供了一份详细的Seurat 5.0.1单细胞测序数据分析教程,涵盖从数据质控到细胞注释的全流程。通过R代码示例和可视化分析,帮助用户掌握单细胞RNA测序数据处理的核心技术,包括数据标准化、降维聚类和细胞类型注释,适用于生物信息学研究和临床数据分析。

weixin_29067143的博客 196

2022年 微前端技术调研- 图文并茂

一.动机在 我们 的前端开发工作中,我们往往就会遇到如下困境:工程越来越大,打包越来越慢团队人员多,产品功能复杂,代码冲突频繁、影响面大内心想做 SaaS 产品,但要求总是要做定制化不同的...

React_Community的博客 2187

PADS Layout新手必看:从元件摆放到地线处理的10个实用技巧

本文为PADS Layout新手提供了10个实用技巧,涵盖元件摆放、地线处理等关键环节。从功能模块化布局到高频信号处理,再到电磁兼容性设计,帮助初学者快速掌握PCB设计核心技能,提升Layout效率和质量。特别适合需要优化PADS Layout工作流程的设计师参考。

stone的博客 254

手把手教你用Matlab搞定GRACE RL06数据读取:冯伟老师工具箱无GUI版实战

本文详细介绍了如何使用Matlab处理GRACE RL06数据,重点解析了冯伟教授工具箱的无GUI版实战操作。通过环境配置、核心函数改造和批处理技巧,帮助科研工作者高效完成重力场数据的读取与分析,特别适合服务器集群环境下的批量处理需求。

weixin_29313817的博客 200

SingleSpa及qiankun入门、源码分析及案例

SingleSpa及qiankun入门及案例 一、简介 1、微服务 为了解决庞大的一整块后端服务带来的变更与扩展方面的限制,出现了微服务架构(Microservices): 微服务是面向服务架构(SOA)的一种变体,把应用程序设计成一系列松耦合的细粒度服务,并通过轻量级的通信协议组织起来 具体地,将应用构建成一组小型服务。这些服务都能够独立部署、独立扩展,每个服务都具有稳固的模块边界,甚至允许使用不同的编程语言来编写不同服务,也可以由不同的团队来管理 然而,越来越重的前端工程也面临同样的问题,自然地想到

wuyxinu的博客 4317

深水区探秘:小红书App x-s参数逆向与高并发爬虫实战(2026版)

在移动互联网的碎片化时代,小红书凭借其“社区+电商”的独特模式,积累了超过3亿月活用户。其内容生态覆盖了从美妆、穿搭到旅行、数码等几乎所有垂直领域。对于数据分析师、市场研究员以及AI算法工程师而言,小红书平台蕴含的价值是巨大的——无论是热门趋势洞察、KOL画像分析,还是多模态图文数据的采集。然而,想要高效、稳定地获取小红书App的公开数据,却并非易事。与Web端相比,小红书App的防护体系堪称“铜墙铁壁”。其核心的反爬机制建立在动态混淆的加密参数之上,尤其是请求头中的X-SX-T以及X-S-Common。

2201_76125261的博客 263

微前端方案调研

微前端方案调研

在所有的事情背后,要有一颗坚定的的本心,要有一颗应对变革和提升自我的本心,世界瞬息万变,本心要坚持到底,保持学习,时刻复盘 1644

FPGA经验谈系列文章——3、逻辑级数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA开发tips系列——前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的

gzy0506的博客 1万+

FineReport 动态列切换统计维度

目标: 自己选择统计维度进行数据的汇总统计数据集参数实现动态列。

Davina_yu的博客 1053

什么是微前端

一、什么是微前端? 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。 微前端借鉴了微服务的架构理念,将一个庞大的前端应用拆分为多个独立灵活的小型应用,每个应用都可以独立开发、独立运行、独立部署,再将这些小型应用联合为一个完整的应用。微前端既可以将多个项目融合为一,又可以减少项目之间的耦合,提升项目扩展性,相比一整块的前端仓库,微前端架构下的前端仓库倾向于更小更灵活。 二、特性 技术栈无关主框架不限制接入应用的技术栈,子应用可自主选择技术栈 独立开...

huangpb的博客 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

微前端简介

微前端(Micro frontends) 复杂、跨团队、高性能要求的项目同时保证 DX 和 UX 的困境? 开发者体验:MPA,我不管其它管理平台,它们不要影响我! 用户体验:SPA,入口找得到,页面跳转不要白屏! 微前端架构 一种架构理念:将单一的web应用拆解成多个可以独立开发、独立运行、独立部署的小型应用,并将它们整合为一个应用 子系统之间开发、技术体系、测试、发布、监控隔离 子系统之间可通信 方案对比 路由分发式: 通过 HTTP 服务器的反向代理功能,来将请求路由到对应的应用

前端小白 2794

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

程序员成长指北 1万+

微前端:主目录

本文是我的博客中关于微前端的一个主目录,先看这篇可以对整体有个大概的了解

分享前端开发工程师的一些日常生活、前端知识点、职业发展、对一些问题的看法、感悟等等 616

chrome切换前端模式_微前端架构调研与思考

目前,我们前端团队的业务主要在官网以及相关的用户中心、商城等系统中,每个系统都有独立的域名,通过刷新浏览器或者新开标签页的方式实现系统间的跳转,系统内切换页面有时候也是刷新页面或者新建标签页,即 MPA 模式,MPA 模式的优点在于部署简单、各应用之间硬隔离,天生具备技术栈无关、独立开发、独立部署的特性。缺点也很明显,应用之间切换会造成浏览器重刷,由于产品域名之间相互跳转,流程体验上会存...

weixin_35410644的博客 326

微前端技术梳理(图文并茂)

微前端调研 一.动机 在 我们 的前端开发工作中,我们往往就会遇到如下困境: 工程越来越大,打包越来越慢 团队人员多,产品功能复杂,代码冲突频繁、影响面大 内心想做 SaaS 产品,但要求总是要做定制化 不同的团队可能有不同的方法去解决这些问题。在前端开发日新月异、前端工程化蓬勃发展的今天,就衍生了另一种尝试——微前端。 二.背景 微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览...

麦 -_- 的博客 2795

微前端的实践分享

本文首发于:https://github.com/bigo-frontend/blog/ 欢迎关注、转载。 微前端的实践分享 需求场景 Brpc服务管理平台想集成开源项目Jaeger(分布式链路追踪系统)的功能,搭建自己的调用链平台,方便使用Brpc框架用户查询自己的服务调用链,以及在此基础上,二次开发,接入公司分布式日志系统的功能,用户可以在本平台便捷地查看业务trace及业务日志,掌握相关信息,快速定位问题。 为什么用微前端 为什么不自行开发 需求与开源项目现成的功能基本一致,简单估了下开发时间,全部.

yeyeye0525的博客 1227

微前端一:技术选型

微前端

weixin_44384273的博客 1161

微前端架构落地实战:qiankun vs Module Federation 2026 深度对比与选型指南

维度qiankun 优势Module Federation 优势成熟度⭐⭐⭐⭐⭐ 生产验证充分⭐⭐⭐⭐⭐ 生态完善性能⭐⭐⭐ 沙箱有开销⭐⭐⭐⭐⭐ 依赖共享隔离性⭐⭐⭐⭐⭐ 强沙箱⭐⭐⭐ 模块级隔离开发体验⭐⭐⭐⭐ 配置简单⭐⭐⭐⭐ 类型支持好多技术栈⭐⭐⭐⭐⭐ 完美兼容⭐⭐⭐ 需额外配置学习成本⭐⭐⭐⭐ 较低⭐⭐⭐ 较陡。

2603_94941239的博客 1264

qiankun微前端实战:从基座搭建到数据通信及部署

随着前端应用规模膨胀,多团队协作与独立交付成为中后台系统的核心诉求。传统iframe嵌入虽能实现页面拼装,却难以解决路由同步、状态共享和弹窗层级等深层问题。微前端架构应运而生,它让不同技术栈的应用能够像独立模块一样协同工作,同时保留独立开发与部署的能力。qiankun作为当前国内最流行的微前端框架,基于single-spa二次封装,提供了HTML Entry、JS沙箱与样式隔离等开箱即用能力。本文从方案选型切入,对比主流微前端实现,重点讲解主应用基座搭建、子应用生命周期改造、父子应用间的数据通信路径,包括p

weixin_30745553的博客 386
上一篇: 用滴滴云Notebook快速上手PyTorch-MINIST手写体
下一篇: Nvidia Ampere 架构深度解析
「已注销」
博客等级 码龄6年 395粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值