字节微前端框架Garfish

news2024/9/20 9:44:51

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.coloradmin.cn/o/2058403.html

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

相关文章

深度学习11--GAN进阶与变种

基础 GAN 存在的问题 在开始讲解变种之前,首先讲一下GAN 存在的问题。第一个问题就是判别器D太强了,损失都是0。假设判别器D能力强,G vl生成的图片与真实图片相差巨大,G v2生成的图片与真实图片相差不多,但是判别器都能…

01. 真正实现一键自动化生成pdf报告

easypdf使用手册 1. 项目介绍1.1 关于1.2 easypdf 有什么优势1.2 easypdf 可以用来做什么1.3 我们该做哪些准备?如何获取easypdf?1.4 项目演示 文章头部展示的附件pdf文档easypdf是项目执行生成的pdf文档 1. 项目介绍 1.1 关于 \qquad easypdf 是我在基…

Floyd算法(最短路问题)

文章目录 Floyd算法介绍Floyd算法思路代码及讲解 Floyd算法介绍 Floyd算法是一种用于找出加权图中所有顶点间最短路径的动态规划方法。它通过逐步考虑每个顶点作为中转点,检查是否有更短路径。算法首先初始化一个权值矩阵,然后通过三层循环更新矩阵&…

linux操作系统命令-文件系统-用户系统-网络-磁盘-进程-常用特殊字符-重定向-

Shell命令格式 命令提示符: 通常显示为 用户名主机名:目录名 $ 或 用户名主机名:目录名 #(对于root用户)。~ 表示当前用户的家目录。 命令格式: bash $ 命令 [-选项] [参数1] [参数2] ... $ 或 # 是命令提示符,$…

Go操作Redis基础方法小全

前言 在前一篇文章中,我们聊了Go操作Redis安装和使用,接下来这篇内容,就简单说一下,Go中操作Redis基础方法,通常是通过第三方库来实现的,如go-redis/redis(现在可能已经是v9或更高版本&#xf…

宋红康JVM调优思维导图

文章目录 1. 概述2. JVM监控及诊断命令-命令行篇3. JVM监控及诊断工具-GUI篇4. JVM运行时参数5. 分析GC日志 课程地址 1. 概述 2. JVM监控及诊断命令-命令行篇 3. JVM监控及诊断工具-GUI篇 4. JVM运行时参数 5. 分析GC日志

ubuntu安装minio

# 下载MinIO的可执行文件 curl -O https://dl.min.io/server/minio/release/linux-amd64/minio # 添加执行权限 chmod x minio # 运行MinIO (需要先创建存储数据和存储存储桶的目录) nohup ./minio server /home/lighthouse/minioDir/data /home/lighthouse/minioDir/bucke…

[JAVA]创建多线程的三种方式与区别

继承Thread类创建线程实现Runnable接口创建线程Callable接口创建线程 要学习创建线程,我们要通过代码来演示,这里我们可以通过实现以下参赛者跑步的场景来展开。 模拟以下场景 模拟10秒短跑程序 假设,这里有三名参赛者,十秒钟时…

使用对比!SLS 数据加工 SPL 与旧版 DSL 场景对照

作者:灵圣 概述 如前一篇《SLS 数据加工全面升级,集成 SPL 语法》所述,SLS 数据加工集成了 SLS 数据处理语法 SPL。与旧版本数据加工 DSL 相比,SPL 在处理非结构化数据的场景中,其语法简洁度上有很多提升&#xff0c…

监控台操作台空间设计如何提升工作环境

在现代化办公环境中,监控台与操作台不仅是技术监控与操作的核心区域,更是工作效率与团队协作的关键所在。优化其空间设计,不仅能显著提升工作环境的质量,还能激发员工的工作热情与创造力。 首先,人体工程学设计是提升监…

C++ | Leetcode C++题解之第352题将数据流变为多个不想交区间

题目&#xff1a; 题解&#xff1a; class SummaryRanges { private:map<int, int> intervals;public:SummaryRanges() {}void addNum(int val) {// 找到 l1 最小的且满足 l1 > val 的区间 interval1 [l1, r1]// 如果不存在这样的区间&#xff0c;interval1 为尾迭代…

Ubuntu 中GCC交叉编译工具链安装

​ Ubuntu 自带的 gcc 编译器是针对 X86 架构的&#xff0c;如果要编译的是 ARM 架构的代码&#xff0c;就需要一个在 X86 架构的 PC 上运行&#xff0c;可以编译 ARM 架 构代码的 GCC 编译器&#xff0c;这个编译器就叫做交叉编译器&#xff0c;总结一下交叉编译器就是&#x…

基于springboot的宠物领养与丢失寻找信息平台-计算机毕设 附源码 14772

基于springboot的宠物领养与丢失寻找信息平台 摘 要 本文介绍了一个基于Spring Boot框架的宠物领养与丢失寻找信息平台的设计与实现。该平台旨在解决宠物领养和丢失寻找过程中的信息不对称和效率低下问题&#xff0c;为宠物主人、领养者提供一个便捷、高效的交互平台。 平台采用…

C++观察者模式Observer

组件协作 –(都是晚绑定的&#xff09; ----观察者模式 为某些对象建立一种通知依赖的关系&#xff0c; 只要这个对象状态发生改变&#xff0c;观察者对象都能得到通知。 但是依赖关系要松耦合&#xff0c;不要太依赖。 eg&#xff1a;做一个文件分割器&#xff0c;需要一个…

android13布局查看工具 无源码查看布局 在线查找ui布局id

总纲 android13 rom 开发总纲说明 目录 1.前言 2.工具介绍 2.1工具1 2.2工具2 2.3工具3 2.4工具4 3.彩蛋 1.前言 Android 13提供了一些工具来帮助开发人员查看和优化应用的布局。方便的让我们找到具体应用的布局文件等信息。 2.工具介绍 2.1工具1 老版本DDMS&#x…

【流媒体】RTMPDump—RTMP_Connect函数(握手、网络连接)

目录 1. RTMP_Connect函数1.1 网络层连接&#xff08;RTMP_Connect0&#xff09;1.2 RTMP连接&#xff08;RTMP_Connect1&#xff09;1.2.1 握手&#xff08;HandShake&#xff09;1.2.2 RTMP的NetConnection&#xff08;SendConnectPacket&#xff09; 2.小结 RTMP协议相关&am…

实际开发中的模块化开发 - 模块间通讯(以直播间为例)

实际开发中的模块化开发 - 模块管理&#xff08;以直播间为例&#xff09;-CSDN博客 引言 在之前的博客中&#xff0c;我们讨论了模块化开发的概念、使用场景及其优势&#xff0c;并通过简单的案例实现了一个基础的模块化结构。我们创建了用户卡片模块和礼物展示模块&#xf…

同样的东西,京东贵多了,为啥还有人选择京东呢?

现在很少有商品&#xff0c;只在一个平台上出售了&#xff0c;几乎哪个平台都能买到。 那为什么京东贵多了&#xff0c;还有人去京东买&#xff1f; 小编就以自己的实际体验来说一说。 先看个案例&#xff1a; 小编去年在京东自营店买了一块西数的机械硬盘&#xff0c;用了…

PHP网上花店管理系统—计算机毕业设计源码无偿分享可私信21170

目 录 摘要 1 绪论 1.1研究背景 1.2项目背景 1.3 Thinkphp框架介绍 1.4论文结构与章节安排 2 网上花店管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.2.2数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非…

怎样更改电脑的MAC地址?

怎样更改电脑的MAC地址&#xff1f; 电脑的机器码是可以修改的。 操作步骤&#xff1a; 1、通过按WINR键&#xff0c;调来电脑的接运行窗口&#xff0c;打开CMD命令来查看机器码。 2、命令提示符窗口里输入ipconfig /all&#xff0c;回车&#xff0c;即可显示出当前电脑的网…