首页 > 其他分享 >【微前端】前端微服务框架对比和技术选型

【微前端】前端微服务框架对比和技术选型

时间:2024-08-26 15:26:56浏览次数:9  
标签:隔离 框架 前端 支持 选型 应用 沙箱

文章目录:

目录

文章目录:

前言:

具体内容:

1.什么是微前端

2.使用微服务的场景:

iframe方案的缺点:

3.主流微服务框架介绍

2.1 无界-腾讯

官网

github地址:

无界的运行模式

简单了解一下原理

主要特性:

优势:

劣势:

2.2 MicroApp-京东

官网:

github地址:

主要特性:

优势:

劣势:

2.3 qiankun-蚂蚁

官网:

github地址:

主要特性:

优势:

劣势:

4.技术选型总结:

最后


前言:

技术的世界就像一座神秘的城堡,充满了未知的宝藏和谜题。而我,作为一名执着的探索者,在不断的追寻中,有了新的发现和感悟,在此与您分享。

本篇文章,我们主要是分析前端几大主流微服务框架,做对比方便选型。


具体内容:

1.什么是微前端

微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。通俗来说,就是在一个web应用中可以独立的运行另一个web应用。

2.使用微服务的场景:

  • 老旧技术栈项目也能平滑迁移至新的技术栈,提升项目的可扩展性
  • 主应用不限制接入应用的技术栈,微应用可以自主选择技术栈
  • 独立部署,降低一个前端应用每次部署涉及的范围,一定程度上减少了项目风险

举例

  • 比如制作一个企业管理平台,把已有的采购系统和财务系统统一接入这个平台;

  • 比如有一个巨大的应用,为了降低开发和维护成本,分拆成多个小应用进行开发和部署,然后用一个平台将这些小应用集成起来;

  • 又比如一个应用使用vue框架开发,其中有一个比较独立的模块,开发者想尝试使用react框架来开发,等模块单独开发部署完,再把这个模块应用接回去

iframe方案的缺点:

  • 路由状态丢失,刷新一下,iframeurl状态就丢失了
  • dom割裂严重,弹窗只能在iframe内部展示,无法覆盖全局
  • web应用之间通信非常困难
  • 每次打开白屏时间太长,对于SPA 应用来说无法接受

3.主流微服务框架介绍

2.1 无界-腾讯

腾讯在维护的,后起之秀,非常轻量,4k star,无痛接入 vite。

官网

微前端是什么 | 无界

github地址:

GitHub - Tencent/wujie: 极致的微前端框架

无界的运行模式

此图为无界官方文档的运行模式图

简单了解一下原理

1)CSS 隔离:使用 shadowDOM 隔离

2)JS 隔离:使用一个空的 iFrame 隔离

3)多应用通讯:使用 Proxy

主要特性
  • 低成本:主应用和子应用的适配成本都极低。
  • 高速度:支持静态资源预加载和子应用预执行,提升首屏打开速度和运行速度。
  • 原生隔离:通过Web Components + Shadow DOM实现css原生隔离,通过iframe实现js原生隔离。
  • 强大功能:支持子应用保活、多应用激活、去中心化通信、vite框架支持、应用共享等。
优势:

成本低、速度快、原生隔离、功能强。

劣势:

官方文档和社区支持相对较少,可能增加学习成本。


2.2 MicroApp-京东

由京东开发,star 5.5k, 是一个基于WebComponents的前端微服务框架,支持多种前端框架。

官网:

MicroApp

github地址:

GitHub - micro-zoe/micro-app: A simple, efficient and powerful micro front-end framework. 一款简约、高效、功能强大的微前端框架

主要特性
  • 无关技术栈:不限制子应用的技术栈。
  • 组件化渲染:通过CustomElement结合ShadowDom实现组件化渲染。
  • JS隔离与样式隔离:提供沙箱机制和样式隔离方案,降低子应用接入成本。
  • 虚拟路由系统:解决子应用之间的路由冲突问题。
  • 支持vite:通过iframe沙箱方案支持vite项目。
优势

兼容所有框架,灵活性高;

提供了JS沙箱、样式隔离、元素隔离、预加载、数据通信等一系列完善的功能。

劣势

需要时间学习;

对于不支持WebComponents的浏览器没有做降级处理。


2.3 qiankun-蚂蚁

该框架是蚂蚁在维护的,15.7k star,目前官方使用的是 webpack 作为构建工具,没有明确表示支持 vite,社区有 vite-plugin-qiankun 插件支持。

是一个基于Single-SPA的微前端实现库。它提供了较高的代码库隔离性和灵活性,支持多种框架和构建工具。

官网:

qiankun - qiankun

github地址:

隔离,框架,前端,支持,选型,应用,沙箱
From: https://blog.csdn.net/happy921212/article/details/141469450

相关文章

  • C#进阶-快速了解IOC控制反转及相关框架的使用
    目录一、了解IOC1、概念2、生命周期二、IOC服务示例1、定义服务接口 2、实现服务三、扩展-CommunityToolkit.Mvvm工具包Messenger信使方式一(收发消息)方式二(收发消息)方式三(请求消息)一、了解IOCIOC,即控制反转(InversionofControl),它通过将对象的创建和管理责任从......
  • 【文档智能 & RAG】浅看开源的同质化的文档解析框架-Docling
    前言RAG的兴起,越来越多的人开始关注文档结构化解析的效果,这个赛道变得非常的同质化。关于文档智能解析过程中的每个技术环节的技术点,前期文章详细介绍了很多内容:下面我们简单的看看Docling这个PDF文档解析框架里面都有什么技术。方法布局分析模型首先,Docling使用一......
  • 【Pytorch教程】迅速入门Pytorch深度学习框架
    @目录前言1.tensor基础操作1.1tensor的dtype类型1.2创建tensor(建议写出参数名字)1.2.1空tensor(无用数据填充)API示例1.2.2全一tensor1.2.3全零tensor1.2.4随机值[0,1)的tensor1.2.5随机值为整数且规定上下限的tensorAPI示例1.2.6随机值均值0方差1的tensor1.2.7从列表或nump......
  • 蓝桥杯单片机入门(4)—编写代码的主函数框架
    这回,我们要讲的是代码编写的大体框架图中注释写的已经很清楚了,一般情况下,我们在最开始的顶部进行头文件的引入其次,主函数一般是不需要有返回值的,如果需要那就定义成int类型,这里我定义的是void没有返回值的类型的函数。voidmain下面就是代码执行的区域了,while(1)是一个死循环......
  • Java计算机毕业设计框架的白果园网上水果超市的设计与实现(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和人们生活节奏的加快,电子商务已成为现代消费不可或缺的一部分。在食品零售领域,尤其是水果市场,传统的线下购买方式逐渐难以......
  • 什么是前端模块化
    面试中,关于打包工具的相关知识是非常常见的考题,无可避免的可能会被问到,为什么需要使用到打包工具、或前端工程化的实现,而要回答这些问题前,需要先了解的就是前端模块化。所以在本篇笔记中,会让大家了解前端模块化的演进和功用。文末有我帮助500多人拿到前端offer的文章!!!什么......
  • GO语言从前端传来的表格数据和表格标题导出到Excel表格中
    提示:使用Go将前端表格数据和标题导出到Excel表格中,你可以使用第三方库,如"xlsx"。数据的操作流程遵循:分析数据格式→确定数据对象→解析→构建表格→生成文件。以下是一个简单的示例,展示了如何在Gin框架中实现该功能:文章目录一、表格样式二、使用步骤1.引入库2.创建路......
  • 小程序开发框架 —— 框架接口汇总(一)
    App(config:Object)介绍注册小程序。接受一个Object参数,其指定小程序的生命周期回调等。App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的效果。参数属性类型默认值必填描述最低版本onLaunchfunction否生命周期回调——监听小程序初始化。o......
  • 前端宝典二十:高频算法之双指针、滑动窗口、二叉树
    一、前言学好算法的根基是:刷题!刷题!刷题!本文将深入探讨高频算法中的双指针、滑动窗口以及二叉树。题目均来源于https://leetcode.cn/。重点关注每种题目的解题思路和总结,通过详尽的解答,包括解答思路和每一步的代码实现,以帮助读者快速理解并掌握这些算法。二、双指针双指......
  • 全面解析:前端调用接口常见HTTP状态码及其含义
    前端在调用接口时,通常会遇到不同的HTTP状态码。每个状态码都代表了服务器对客户端请求的不同响应。以下是常见的HTTP状态码及其含义:1xx信息响应100Continue:服务器已经接收到请求头,客户端应继续发送请求主体。101SwitchingProtocols:服务器同意客户端请求切换协议。......