微前端框架是为了解决项目应用在大型项目中带来的复杂性和维护难题而提出的技术方案。

微前端框架是为了解决单页应用(SPA)在大型项目中带来的复杂性和维护难题而提出的技术方案。Qiankun.jsMicroAppWujie 是三种流行的微前端框架。以下是对这三种框架的优缺点分析:
在这里插入图片描述

Qiankun.js

优点
  1. 成熟度高:Qiankun.js 基于 Single-SPA,并针对中国开发者进行了优化和本地化,已经得到了广泛的应用和验证。
  2. 生态系统完善:提供了丰富的插件和工具链,支持快速集成和上手。
  3. 框架无关性:支持 React、Vue、Angular 等多种主流前端框架,可以在同一个项目中同时使用多种技术栈。
  4. 灵活性强:可以自由选择是否使用沙箱隔离、应用加载策略等,满足不同场景需求。
  5. 社区活跃:有较多的社区资源和支持,问题解决较快。
缺点
  1. 复杂度高:由于其功能强大,配置和使用相对复杂,对开发者的技术要求较高。
  2. 性能开销:在某些场景下,沙箱隔离机制会带来一定的性能开销。

MicroApp

优点
  1. 轻量级:MicroApp 体积小,性能较好,适合对性能要求较高的项目。
  2. 简单易用:上手简单,API 设计清晰,开发成本低。
  3. 兼容性好:支持各种主流前端框架,并且能够与现有项目无缝集成。
  4. 灵活性强:提供灵活的加载和卸载机制,支持动态应用加载。
缺点
  1. 功能较少:相比 Qiankun.js,MicroApp 的功能相对较少,不支持某些高级特性。
  2. 社区资源较少:社区相对不够活跃,遇到问题时可能需要更多时间解决。

Wujie

优点
  1. 高度隔离:Wujie 强调应用间的高度隔离,保证各个子应用之间不会互相影响。
  2. 高性能:针对性能进行了优化,适合对性能要求较高的项目。
  3. 现代化设计:采用现代化的设计思想,支持最新的前端技术和工具链。
缺点
  1. 相对较新:相较于 Qiankun.js 和 MicroApp,Wujie 较为新颖,社区和生态系统尚在发展中。
  2. 文档和支持:由于其新颖性,文档和支持可能不如 Qiankun.js 完善。

总结

  • Qiankun.js 适合大型项目和复杂场景,功能全面,但使用复杂度较高。
  • MicroApp 适合中小型项目,追求轻量级和高性能,功能相对较少。
  • Wujie 适合现代化前端项目,强调隔离和性能,但社区资源和支持尚待发展。

1. Qiankun.js

安装
npm install qiankun
基本使用方法
  1. 主应用配置

在主应用中,配置 qiankun 并注册子应用:

import { registerMicroApps, start } from 'qiankun';registerMicroApps([{name: 'reactApp',entry: '//localhost:7100',container: '#container',activeRule: '/react',},{name: 'vueApp',entry: '//localhost:7101',container: '#container',activeRule: '/vue',},
]);start();
  1. 子应用配置

在子应用中,添加 qiankun 的生命周期函数:

import './public-path';
import Vue from 'vue';
import App from './App.vue';Vue.config.productionTip = false;let instance = null;
function render(props = {}) {const { container } = props;instance = new Vue({render: h => h(App),}).$mount(container ? container.querySelector('#app') : '#app');
}if (!window.__POWERED_BY_QIANKUN__) {render();
}export async function bootstrap() {console.log('Vue app bootstraped');
}
export async function mount(props) {render(props);
}
export async function unmount() {instance.$destroy();instance = null;
}
  1. 主应用中加载子应用的 HTML 文件
<div id="container"></div>
更多功能
  • 沙箱隔离qiankun 支持多种沙箱隔离策略,可以在注册子应用时配置。
  • 全局状态管理:可以通过 qiankun 提供的 initGlobalState 方法进行全局状态管理。

2. MicroApp

安装
npm install @micro-zoe/micro-app
基本使用方法
  1. 主应用配置

在主应用中,引入并使用 MicroApp

import microApp from '@micro-zoe/micro-app';microApp.start();

在 HTML 中嵌入子应用:

<micro-app name="vue-app" url="http://localhost:7101/"></micro-app>
<micro-app name="react-app" url="http://localhost:7100/"></micro-app>
  1. 子应用配置

在子应用中无需特殊配置,只需正常开发应用,确保入口文件(如 index.html)能够被主应用访问即可。

更多功能
  • 应用间通信:使用 microApp 提供的通信接口可以实现主应用和子应用间的通信。
  • 加载策略:可以配置子应用的加载和卸载策略。

3. Wujie

安装
npm install wujie
基本使用方法
  1. 主应用配置

在主应用中,引入并使用 Wujie

import { createWujieApp } from 'wujie';const app = createWujieApp({el: '#app',apps: [{name: 'vueApp',url: 'http://localhost:7101/',container: '#container',activeRule: '/vue',},{name: 'reactApp',url: 'http://localhost:7100/',container: '#container',activeRule: '/react',},],
});app.start();
  1. 子应用配置

在子应用中无需特殊配置,只需正常开发应用,确保入口文件(如 index.html)能够被主应用访问即可。

更多功能
  • 应用隔离:Wujie 强调应用间的高度隔离,确保不同子应用之间不会互相影响。
  • 性能优化:Wujie 进行了大量性能优化,适合对性能要求较高的项目。

虚拟路由(Virtual Routing)在微前端框架中起着关键作用,它允许主应用和子应用之间协调 URL 路由的变化,以便用户在访问某个路径时,能够正确加载对应的子应用。下面分别介绍 Qiankun.jsMicroAppWujie 这三种微前端框架的虚拟路由使用方式及优缺点。

1. Qiankun.js

虚拟路由使用方式

Qiankun 中,主应用和子应用都可以拥有自己的路由系统。主应用使用路由来激活不同的子应用,而子应用本身也可以有独立的路由。

  • 主应用配置

在主应用中,通过 registerMicroApps 注册子应用时,指定 activeRule 来匹配 URL 路径:

import { registerMicroApps, start } from 'qiankun';registerMicroApps([{name: 'reactApp',entry: '//localhost:7100',container: '#container',activeRule: '/react',},{name: 'vueApp',entry: '//localhost:7101',container: '#container',activeRule: '/vue',},
]);start();
  • 子应用配置

子应用可以使用各自的路由库(如 react-routervue-router)来管理内部路由。

// Vue 子应用示例
import Vue from 'vue';
import Router from 'vue-router';
import App from './App.vue';
import routes from './routes';Vue.use(Router);const router = new Router({ routes });new Vue({router,render: h => h(App)
}).$mount('#app');
优缺点分析
  • 优点

    • 灵活性高,主应用和子应用都可以独立管理自己的路由。
    • 子应用可以使用自己熟悉的路由库,无需对现有代码进行大幅修改。
  • 缺点

    • 需要手动处理主应用和子应用的路由切换,尤其是嵌套多层子应用时,配置和管理较复杂。
    • 对于复杂的路由场景,主应用和子应用之间的 URL 同步和参数传递可能会比较麻烦。

2. MicroApp

虚拟路由使用方式

MicroApp 支持子应用的独立路由,同时通过 micro-app 标签来嵌入子应用,并且子应用可以与主应用路由进行联动。

  • 主应用配置

在主应用中,直接使用 micro-app 标签来嵌入子应用。

<!-- 主应用 HTML -->
<micro-app name="vue-app" url="http://localhost:7101/"></micro-app>
<micro-app name="react-app" url="http://localhost:7100/"></micro-app>
  • 子应用配置

子应用依然可以使用各自的路由库来管理路由。

// React 子应用示例
import React from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import App from './App';const Root = () => (<Router><Switch><Route path="/" component={App} /></Switch></Router>
);export default Root;
优缺点分析
  • 优点

    • 使用方式简单,主应用和子应用之间路由解耦,子应用可以独立开发和调试。
    • 子应用可以使用自己熟悉的路由库,减少学习成本。
  • 缺点

    • 主应用与子应用的路由联动可能需要额外处理。
    • 对于复杂的路由场景,可能需要额外的逻辑来处理 URL 同步和参数传递。

3. Wujie

虚拟路由使用方式

Wujie 强调应用间的高度隔离,同时提供灵活的路由管理方案。主应用和子应用都可以独立管理自己的路由。

  • 主应用配置

在主应用中,通过 createWujieApp 注册子应用,并指定 URL 和容器。

import { createWujieApp } from 'wujie';const app = createWujieApp({el: '#app',apps: [{name: 'vueApp',url: 'http://localhost:7101/',container: '#container',activeRule: '/vue',},{name: 'reactApp',url: 'http://localhost:7100/',container: '#container',activeRule: '/react',},],
});app.start();
  • 子应用配置

子应用可以使用各自的路由库来管理路由。

// Vue 子应用示例
import Vue from 'vue';
import Router from 'vue-router';
import App from './App.vue';
import routes from './routes';Vue.use(Router);const router = new Router({ routes });new Vue({router,render: h => h(App)
}).$mount('#app');
优缺点分析
  • 优点

    • 强调应用间的隔离,主应用和子应用都可以独立管理路由,减少互相干扰。
    • 子应用可以使用自己熟悉的路由库,无需对现有代码进行大幅修改。
  • 缺点

    • 需要额外处理主应用和子应用的路由联动,尤其是在路径同步和参数传递方面。
    • 对于复杂的路由场景,可能需要额外的逻辑来处理 URL 同步和状态管理。

总结

  • Qiankun.js 提供灵活的路由管理方案,但需要手动处理主应用和子应用的路由切换,适合大型复杂项目。
  • MicroApp 使用简单,主应用和子应用解耦,适合中小型项目,但路由联动需要额外处理。
  • Wujie 强调应用隔离,使用灵活,但需要额外处理路由联动,适合现代前端项目。

压图地址

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

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

相关文章

【知识学习】阐述Unity3D中FogLOD的概念及使用方法示例

在Unity3D中&#xff0c;Fog&#xff08;雾效&#xff09;和LOD&#xff08;Level of Detail&#xff0c;细节层次&#xff09;是两种用于提高场景视觉效果和性能的技术。 Fog&#xff08;雾效&#xff09; 雾效是一种视觉效果&#xff0c;用于模拟大气中的雾或烟&#xff0c…

YOLOv8数据集标注

1 简介 数据集是必不可少的部分&#xff0c;数据集的优劣直接影响训练效果。一般来说&#xff0c;一个完整的数据集应该包括训练集、测试集和验证集。通常&#xff0c;数据集会被划分为训练集和测试集&#xff0c;比如将数据集的70%用作训练集&#xff0c;30%用作测试集。在进行…

信号处理——时频分析

经典傅里叶变换的限制&#xff1a; 1、只能反映信号的整体特性&#xff1b;&#xff08;完全是时域或频域&#xff09; 2、要求信号满足平稳条件&#xff1b; 3、必须获得时域中的全部信息。 所以引入时频分析&#xff0c;同时使用时间和频率的联合函数来表示信号。 1 时频…

提高数据融合效率和数据成果质量工作流的可行性分析

第一章 引言 本文基于对框架数据、地名地址数据以及变更调查数据为主体数据源的分析&#xff0c;结合数据融合中分层数据处理原则和内容&#xff0c;从数据管理者、数据应用的角度提出数据质量的定位、需求定位&#xff0c;归纳数据融合过程中存在的困难&#xff0c;提出了数据…

FANUC喷涂机器人P-350iA电机过热维修解决方案

发那科喷涂机器人作为自动化喷涂生产线的重要组成部分&#xff0c;其性能稳定性和可靠性对于生产效率和产品质量具有重要影响。然而&#xff0c;在实际使用过程中&#xff0c;FANUC喷涂机器人P-350iA电机过热故障问题往往成为影响其正常运行的主要因素之一。 FANUC机器人M-100…

一款开源免费的现代化风格的Avalonia控件库

前言 Citrus.Avalonia是一款开源&#xff08;MIT License&#xff09;、免费的现代化风格的Avalonia控件库。 Avalonia介绍 Avalonia是一个强大的框架&#xff0c;使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件&#xff0c;确保在Windows、mac…

推荐系统数据集——Amazon-Book

在推荐系统中&#xff0c;像Amazon-Book这样的数据集通常包含用户和物品的交互信息。为了训练模型&#xff0c;这些数据需要转换成适合模型输入的格式。在这种情况下&#xff0c;item_list和user_list需要转换成train.txt文件&#xff0c;通常包含用户ID和物品ID的交互记录。 …

你的生日是星期几?HTML+JavaScript帮你列出来

0 源起 上周末&#xff0c;大宝发现今年自己的生日不是周末&#xff0c;这样就不好约同学和好友一起开生日Party了&#xff0c;很是郁闷。一直嘀咕自己哪年的生日才是周末。 于是我用JavaScript写了一个小程序来帮她测算了未来100年中每年的生日分别是星期几。 1 设计交互界面…

搭建大型分布式服务(四十一)SpringBoot 整合多个kafka数据源-支持亿级消息生产者

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目&#xff0c;每天处理上亿级的数据的精简小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…

【ARM】MCU和SOC的区别

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 了解SOC芯片和MCU芯片的区别 2、 问题场景 用于了解SOC芯片和MCU芯片的区别&#xff0c;内部结构上的区别。 3、软硬件环境 1&#xff09;、软件版本&#xff1a;无 2&#xff09;、电脑环境&#xff1a;无 3&am…

Java——枚举

1. 概念 枚举是在JDK1.5之后引入的&#xff0c;主要用途是&#xff1a;将一组常量组织起来&#xff0c;在这之前表示一组常量通常使用定义常量的方式&#xff1a; public static final int RED 1; public static final int GREEN 2; public static final int BLACK 3;但是…

第 12 课:基于隐语的VisionTransformer框架

基于之前MPC的基础知识&#xff0c;本讲主要内容是MPCViT基于SecretFlow的VisionTransformer框架&#xff0c;主要从神经网络架构&#xff0c;隐私推理框架和实验结果三方面介绍。 一、MPCViT&#xff1a;安全且高效的MPC友好型 Vision Transformer架构 MPCViT隐私推理总体框架…

QT中子工程的创建,以及如何在含有库的子工程项目中引用主项目中的qt资源

1、背景 在qt中创建多项目类型,如下: CustomDll表示其中的一个动态库子项目; CustomLib表示其中的一个静态库子项目; MyWidget表示主项目窗口(main函数所在项目); 2、qrc资源的共享 如何在CustomDll和CustomLib等子项目中也同样使用 MyWidget项目中的qrc资源呢??? 直…

【项目实训】后端逻辑完善

经测试&#xff0c;我们决定前端可以同时选择多个类型的岗位进行查询&#xff0c;以显示相应的公司岗位信息 于是&#xff0c;修改后端函数的逻辑&#xff1a; 后端 首先&#xff0c;因为要对checkList中的job_name进行模糊匹配查询&#xff0c;于是使用以下代码&#xff1a…

【科学计算与可视化】3. Matplotlib 绘图基础

安装 pip install matplotlib 官方文档 https://matplotlib.org/stable/api/pyplot_summary.html 主要介绍一些图片绘制的简要使用&#xff0c;更加详细和进阶需要可参考 以上官方文档。 1 绘制基础 方法名说明title()设置图表的名称xlabel()设置 x 轴名称ylabel()设置 y 轴…

负载组指南说明-负载柜

什么是负载组&#xff1f; 负载组是一种设备&#xff0c;旨在准确模拟电源在实际应用中看到的负载。这种负载组可以用电阻、电感或电容元件构建。它是一种电阻装置&#xff0c;以热量的形式消散一定量的能量&#xff0c;可以通过自然对流、强制空气或水冷系统去除。 为什么要使…

江协科技51单片机学习- p11 Proteus安装模拟51单片机

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记&#xff0c;在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用&#xff1a; Proteus快速入门&…

可溶性聚四氟乙烯离子交换柱PFA层析柱微柱一体成型

PFA微柱&#xff0c;也叫PFA层析柱、PFA离子交换柱等&#xff0c;主要用于地质同位素超净化、痕量、超痕量、微量元素分析实验室。 规格参考&#xff1a;1.5ml、15ml、30ml等。 其主要特性有&#xff1a; 1、PFA层析柱&#xff08;微柱&#xff09;专为离子交换设计&#xff…

SAP ERP公有云(全称 SAP S/4HANA Cloud Public Edition),赋能企业成为智能可持续的企业

在数字化浪潮中&#xff0c;每一家企业都需要应对快速的市场变化&#xff0c;不断追求降本增效&#xff0c;为创新提供资源&#xff0c;发展新的业务模式&#xff0c;安全无忧地完成关键任务系统的转型。 10年前&#xff0c;SAP进入云领域&#xff0c;用云ERP和覆盖全线业务的云…

双通道源表KEITHELY2636B详情参数吉时利2636B

Keithley的2636B是一款2600B系列双通道系统源表(SMU)仪器(0.1fA, 10A脉冲)。它是业界领先的电流/电压源和测量解决方案。这种双通道模型结合了精密电源&#xff0c;真电流源&#xff0c;6 1/2位DMM&#xff0c;任意波形发生器&#xff0c;脉冲发生器和电子负载的能力&#xff0…