字节微前端框架Garfish

Garfish 是字节跳动开源的微前端框架,旨在应对现代 Web 应用在前端生态繁荣与应用日益复杂化背景下的挑战。本文将介绍如何使用 Garfish,提供代码示例,并与另一流行的微前端框架 Qiankun 进行对比分析。
在这里插入图片描述

安装 Garfish

首先,安装 Garfish 核心库:

npm install @garfish/core --save

创建主应用

创建主应用的入口文件,如 index.jsmain.js,并初始化 Garfish:

import Garfish from '@garfish/core';const garfish = new Garfish({router: {historyType: 'hash',publicPath: '/',routes: [{path: '/app1',microApp: {name: 'app1',entry: '//localhost:8081',container: '#root',activeRule: (location) => location.pathname === '/app1',},},{path: '/app2',microApp: {name: 'app2',entry: '//localhost:8082',container: '#root',activeRule: (location) => location.pathname === '/app2',},},],},
});garfish.start();

开发与构建微应用

每个微应用都应有独立的构建流程,以下是基于 localhost:8081 运行的 Vue 应用示例:

Vue 示例

在微应用中,暴露必要的 API 供 Garfish 调用:

// app1/main.js
import { bootstrap, mount, unmount } from '@garfish/runtime-vue';
import App from './App.vue';bootstrap(App).then(mount(App)).catch(console.error);window.unmount = unmount;

使用 Webpack 或 Rollup 等工具来打包微应用。例如,使用 Webpack:

// webpack.config.js
module.exports = {entry: './src/index.js',output: {filename: 'bundle.js',publicPath: '/',},// 其他配置...
};

打包完成后,将微应用部署到相应的服务器,如 localhost:8081

Garfish 与 Qiankun 的对比

技术栈支持

  • Garfish:兼容 Vue、React、Angular 等多种前端框架。
  • Qiankun:同样支持多种前端框架,但在某些场景下的兼容性和表现可能有所不同。

路由管理

  • Garfish:通过路由规则管理微应用的加载与卸载。
  • Qiankun:采用类似机制,但在细节处理上存在一些差异。

隔离机制

  • Garfish:使用沙箱机制,减少全局变量污染的风险。
  • Qiankun:也提供了沙箱机制,但在某些案例中表现略逊。

配置复杂度

  • Garfish:配置相对简单,路由配置即可启动。
  • Qiankun:配置较为详细,尤其在处理跨域资源和状态管理时。

社区支持和文档

  • Garfish:字节跳动出品,拥有强大的社区支持和丰富的文档资源。
  • Qiankun:社区支持广泛,但文档和示例相对较少。

Garfish 常见问题

Garfish 支持哪些前端框架?

Garfish 支持包括 Vue、React、Angular 在内的多种前端框架,开发者可以根据自身的技术栈选择合适的框架。

如何处理跨域问题?

  1. CORS 设置:确保服务器配置了适当的 CORS 设置。
  2. 代理:在开发环境中使用 Webpack 等构建工具的代理功能。
  3. JSONP:某些 API 场景下,可考虑使用 JSONP 请求。

如何保证微应用间的隔离?

Garfish 内置 VM 沙箱机制,确保微应用之间的资源隔离,避免全局变量污染。

如何调试微应用?

  1. 开发者工具:利用浏览器的开发者工具。
  2. 日志输出:使用 console.log() 等方法输出调试信息。
  3. 单元测试:编写单元测试覆盖微应用的功能点。

结论

Garfish 为微前端开发提供了强大的工具集,能够有效解决跨团队协作、技术体系多样化等问题。Garfish 与 Qiankun 各有优势,选择框架时应根据项目的具体需求和技术偏好。通过遵循本指南,你可以充分利用 Garfish 的强大功能,构建高效、可维护的微前端系统。

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

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

相关文章

快速排序模版

1.霍尔法 #include <iostream> using namespace std; int partition(int *arr,int left,int right){int pivotIndexleft;while(left<right){while(left<right && arr[right]>arr[pivotIndex]){right--;}while(left<right && arr[left]<a…

vTable实现多维表格

介绍 vTable是字节开发的一款能用来渲染表格的库&#xff0c;是用canvas渲染&#xff0c;避免了传统用dom组件表格的一些问题&#xff0c;能很快的渲染出上万格子的表格。 接下来我将使用vTable构建类似下面的多维表格&#xff0c;其中quantity、sales等是指标。 使用 官网地址…

QT的基础数据类型(下)

QVector 与QList类似,但它在内存使用上更为紧凑,内部使用动态数组来存储元素,适用于存储大量相同类型的数据。 初始化 QVector的初始化方式有以下几种: //初始化一个空的QVectorQVector<int> vec;//初始化一个大小为10的空QVectorQVector<int> vec2(10);//使…

【精选】基于大数据的___银行信用卡用户的数仓系统的设计与实现(全网独一无二,最新定制)

目录&#xff1a; 关键技术介绍 PYTHON语言简介 大数据介绍 MySql数据库 DJANGO框架 Hadoop介绍 Scrapy介绍 B/S架构 系统的设计 系统总功能模块设计 系统测试 系统测试的目的 软件测试过程 6.3测试用例 参考代码&#xff1a; 为什么选择我&#xff1a; 博主介绍&am…

github访问加速项目@一键部署自动更改host修改加速Github访问

文章目录 abstractpowershell 版本的一键更新hosts文件更新Hosts 操作步骤准备:设置powershell执行策略powrshell脚本注册计划任务定期自动执行上述操作相关目录结构 其他方法获取相关脚本一键运行整合脚本&#x1f916;&#x1f43d;检查 abstract 尽管这里实现了一键部署自动…

自动驾驶-机器人-slam-定位面经和面试知识系列10之高频面试题(04)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新&#xff0c;基本涵盖了自己秋招历程被问过的面试内容&#xff08;除了实习和学校项目相关的具体细节&#xff09;。在知乎和牛客也会同步更新&#xff0c;全网同号&#xff08;lonely-stone或者…

Elasticsearch安装 Kibana安装

安装Elasticsearch 一、拉取镜像或者上传 docker pull Elasticsearch 二、将上传的镜像导入(在仓库拉取的这一步跳过) docker load -i es.tar docker load -i 三、创建容器 1.Elasticsearch 注意修改到自己的网络&#xff08;第八行&#xff09; docker run -d \--nam…

实时多个人脸跟踪算法实现过程记录【实时MOT】

实现的功能 之前做的实时多个人脸跟踪&#xff0c;现在记录一下。 摄像头检测到多个人脸&#xff0c;再进行跟踪。 现有问题&#xff1a;如果直接调用opncv的人脸跟踪&#xff0c;耗时多&#xff0c;无法做到实时。 具体实现过程 分为两个步骤&#xff1a;1.选base 2. 做优化…

2014年4月-2023年上市公司秩鼎ESG评级数据

2014年4月-2023年上市公司秩鼎ESG评级数据 1、时间&#xff1a;2014年4月-2023年11月 2、来源:秩鼎数据 3、指标&#xff1a;证券代码、SC、评级日期、ESG评级、ESG等级、ESG得分、E评级、E等级、E得分、S评级、S等级、S得分、G评级、G等级、G得分、总市值(亿元)、流通市值(…

电脑硬盘坏了怎么恢复数据?

在数字化时代&#xff0c;电脑硬盘作为存储核心&#xff0c;承载着我们的工作文档、学习资料、家庭照片以及无数珍贵的回忆。然而&#xff0c;硬盘作为机械设备&#xff0c;也有其寿命和脆弱性&#xff0c;一旦出现故障&#xff0c;数据恢复便成为了一个紧迫而棘手的问题。本文…

电子元器件之聚丙烯膜电容(CBB)

很多人对硬件感兴趣&#xff0c;要么就是想学一门手艺&#xff0c;找一份相关的工作。要么就是对电子感兴趣&#xff0c;想自己做些东西玩玩。虽然现在很多电子模块已经很成熟了&#xff0c;稍微连接一下线路就能做一个自己电子小制作&#xff0c;网上也有很多教学视频。 但大…

「Python程序设计」基本数据类型:字符串

​在python的程序设计过程中&#xff0c;字符串是需要经常处理的变量类型。字符串在程序中的存储方式&#xff0c;类似于一维数组&#xff0c;每个字符占据数组中的一个单元格。 字符串可以存储字符类型的变量&#xff0c;即使是数字类型&#xff0c;也可以通过字符串来进行存…

(javaweb)maven高级

目录 ​编辑 1.分模块设计与开发 2.继承与聚合--继承关系实现 3.继承与聚合--版本锁定 4.继承与聚合--聚合版本 5.私服 资源的上传与下载 1.分模块设计与开发 分模块&#xff1a;拆分成多个模块进行开发 不分模块&#xff1a;业务代码堆积成一个 不利于项目管理和维护并…

Apache PDFBox

文章目录 一、关于 Apache PDFBox二进制下载构建贡献支持已知限制和问题许可证&#xff08;另见[LICENSE. txt](https://github.com/apache/pdfbox/blob/trunk/LICENSE.txt)&#xff09;出口管制 二、依赖1、核心组件最低要求字体处理XMP元数据使用Maven包含依赖项 2、可选组件…

密码生成器(HTML+CSS+JavaScript)

&#x1f30f;个人博客主页&#xff1a;心.c ​ 前言&#xff1a;前两天写了密码生成器&#xff0c;现在跟大家分享一下&#xff0c;大家如果想使用随便拿&#xff0c;如果哪里有问题还请大佬们给我指出&#xff0c;感谢支持 &#x1f525;&#x1f525;&#x1f525;专题文章&…

MySQL 的半同步模式

目录 1 半同步简介: 解决主从数据一致性问题 2 实现半同步模式实践操作 2.1 MASTER 2.2 SLAVE 1 2.3 SLAVE 2 2.4 查看client链接状态 2.5 SLAVE 服务器故障模拟 2.5.1 停止 SLAVE 的 IO_THREAD 2.5.2 查看SLAVE 的IO线程是否关闭 2.5.3 查看 MASTER 上 client 的连接状态…

在树莓派5上使用pytroch进行模型训练—全流程笔记

在树莓派上运行pytroch模型&#x1f680; 在完成了树莓派的一系列基础配置学习之后&#xff0c;按照规划&#xff0c;下一步要做的就是在树莓派上安装一个pytorch&#xff0c;尝试运行一下深度学习的模型&#xff0c;如果可以实现且准速度有一定保证的话&#xff0c;就可以作为…

使用Qt+Visual Stuidio写一个简单的音乐播放器(1)

1.使用QMediaPlayer播放音乐 第三步:在代码头部加上: #include <QtMultimedia/QMediaPlayer> // VS向.pro文件添加代码的方式 #pragma execution_character_set("utf-8") // qt支持显示中文 QMediaPlayer类是一个高级媒体播放类。它可以用来播放歌曲、电…

java:获取桥接方法的参数名

如果一个方法是桥接方法&#xff0c;那么因为这个方法是由编译器自动生成的&#xff0c;所以它的方法参数名是无意的arg0,arg1。。。 如果要直接通过Method.getParameters(),得到的Pamameter对象中的name就是这些意义的名字。 所以对于一个由编译器生成的桥接方法&#xff0c;如…

常见的视频监控RTSP RTMP 流媒体协议及开发测试工具

一 流媒体协议 RTMP (Real-Time Messaging Protocol): 封装格式&#xff1a;FLV 或 MP4协议&#xff1a;TCP端口&#xff1a;默认2200厂家&#xff1a;Adobe Systems特点&#xff1a;实时性强&#xff0c;延迟低&#xff0c;支持服务器端的推流和拉流。应用&#xff1a;主要用…