微前端架构:使用不同框架构建可扩展的大型应用

概述

在现代Web开发中,随着业务复杂度的不断提高,单一的巨型应用逐渐难以满足高效开发和维护的需求。微前端架构作为一种解决方案,允许将一个大型应用拆分成多个独立的小型应用,这些小型应用可以单独开发、部署,并且能够灵活地集成在一起形成一个完整的系统。这种模式提高了开发效率,降低了维护成本,并且可以支持多种前端框架共存。

微前端架构的优点

  1. 可扩展性:每个微前端都可以独立开发、部署,易于扩展。
  2. 灵活性:可以根据业务需求选择最合适的前端框架和技术栈。
  3. 隔离性:各个微前端之间相互隔离,降低了互相影响的风险。
  4. 可维护性:每个微前端都是一个小的、可管理的模块,更容易维护。

微前端架构的实现方式

qiankun

qiankun 是一个轻量级的微前端解决方案,它基于单页应用 (SPA) 的理念,使用代理的方式实现了子应用的加载和卸载。

示例:使用qiankun实现多框架微前端

假设我们有一个主应用(使用React),以及两个子应用(一个使用Vue,另一个使用Angular)。

1. 主应用(使用React)

安装依赖

bash

深色版本

1npm install react react-dom @umijs/qiankun
创建主应用

jsx

深色版本

1// src/index.js
2import React from 'react';
3import ReactDOM from 'react-dom';
4import { registerMicroApps, start } from 'qiankun';
5
6const container = document.getElementById('root');
7
8ReactDOM.render(
9  <div>
10    <h1>主应用 - React</h1>
11    <div id="sub-vue"></div>
12    <div id="sub-angular"></div>
13  </div>,
14  container
15);
16
17registerMicroApps([
18  {
19    name: 'sub-vue',
20    entry: '//localhost:8081',
21    container: '#sub-vue',
22    activeRule: '/sub-vue',
23  },
24  {
25    name: 'sub-angular',
26    entry: '//localhost:4200',
27    container: '#sub-angular',
28    activeRule: '/sub-angular',
29  },
30]);
31
32start();

2. Vue 子应用

安装依赖

bash

深色版本

1npm install vue
创建Vue子应用

vue

深色版本

1// src/main.js
2import Vue from 'vue';
3import App from './App.vue';
4
5new Vue({
6  render: h => h(App),
7}).$mount('#app');
8
9if (module.hot) {
10  module.hot.accept();
11}

html

深色版本

1<!-- public/index.html -->
2<!DOCTYPE html>
3<html lang="en">
4<head>
5  <meta charset="UTF-8">
6  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7  <title>Vue Sub Application</title>
8</head>
9<body>
10  <div id="app"></div>
11  <script src="/dist/runtime.js"></script>
12  <script src="/dist/polyfills.js"></script>
13  <script src="/dist/vendor.js"></script>
14  <script src="/dist/main.js"></script>
15</body>
16</html>
 

vue

深色版本

1<!-- src/App.vue -->
2<template>
3  <div>
4    <h1>子应用 - Vue</h1>
5  </div>
6</template>
7
8<script>
9export default {
10  name: 'App',
11};
12</script>

3. Angular 子应用

安装依赖

bash

深色版本

1ng new angular-sub-app
2cd angular-sub-app
3ng build --prod
修改Angular子应用

typescript

深色版本

1// src/app/app.component.ts
2import { Component } from '@angular/core';
3
4@Component({
5  selector: 'app-root',
6  template: `
7    <div>
8      <h1>子应用 - Angular</h1>
9    </div>
10  `,
11})
12export class AppComponent {}

4. 启动服务器

对于Vue和Angular子应用,你可以使用本地开发服务器启动它们。例如,Vue可以用vue-cli启动,Angular可以用ng serve启动。

5. 测试

在浏览器中访问主应用的地址(比如 http://localhost:3000/),然后导航到 /sub-vue/sub-angular,你会看到Vue和Angular子应用被正确加载和渲染。


以上是一个简单的示例,展示了如何使用qiankun实现基于不同前端框架的微前端架构。在实际项目中,你还需要考虑更多因素,比如状态管理、路由同步等问题。希望这个例子能够帮助你理解微前端的基本概念和实现方法。

以下是根据微前端架构下的主应用和两个子应用(一个Vue,一个Angular)设计的架构图:

微前端架构图

此图展示了一个使用React作为主应用的场景,其中包含了两个子应用,分别是使用Vue和Angular构建的。主应用使用了qiankun来管理和调度子应用的加载与卸载。每个子应用都有自己的开发和构建流程,并且可以独立部署,最终通过主应用集成在一起。

希望这个架构图能够帮助你更好地理解微前端的工作原理和组件之间的交互方式。如果有任何疑问或需要进一步的帮助,请随时提问。

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

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

相关文章

【Neo4j系列】简化Neo4j数据库操作:一个基础工具类的开发之旅

作者&#xff1a;后端小肥肠 在Neo4j系列我打算写一个Neo4j同步关系数据库、增删改查及展示的基础小系统&#xff0c;这篇文件先分享系统里面的基础工具类&#xff0c;感兴趣的可以点个关注&#xff0c;看了文章的jym有更好的方法可以分享在评论区。 创作不易&#xff0c;未经允…

快讯 | OpenAI 找回场子:chatgpt-4o-latest 刷新多项AI跑分纪录

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展&#xff0c;捕捉行业动态&#xff1b;提供深入的新闻解读&#xff0c;助您洞悉技术背后的逻辑&#xff1b;汇聚行业专家的见解&#xff0c;…

微信支付代理商-自助提交资料源码之结算信息页面—微信支付商机版

一、支付代理上自助提交资料 一般在都在小程序完成提交 在网页中异常提示alert 但是很多小程序禁用了这个函数 并且不好看 那么久自定义一个组件每次直接调用 二、提示技术代码 function 未来之窗_VOS_通用提醒(msg){var 未来之窗内容message<cyberdiv style"font…

C++| QT图片调整透明度叠加

QT图片调整透明度叠加 实际效果界面UI放置控件设置布局界面自适应 代码项目工程的文件初始化按钮功能滑动条功能图片调整透明度叠加 实际效果 三个图片&#xff08;QLabel&#xff09;显示&#xff0c;两个按钮&#xff08;QPushButton&#xff09;加载图片&#xff0c;一个&a…

Spring 声明式事务 @Transactional

目录 一、添加依赖 二、Transactional 作用 三、Transactional详解 3.1 rollbackFor 3.2 事务隔离级别 3.3 Spring 事务传播机制 Spring 声明式事务 Transactional的使用很简单&#xff0c;只需要添加依赖&#xff0c;在需要的方法或者类上添加 Transactional注解即可。 …

AMBA-CHI协议详解(六)

AMBA-CHI协议详解&#xff08;一&#xff09; AMBA-CHI协议详解&#xff08;二&#xff09; AMBA-CHI协议详解&#xff08;三&#xff09; AMBA-CHI协议详解&#xff08;四&#xff09; AMBA-CHI协议详解&#xff08;五&#xff09; AMBA-CHI协议详解&#xff08;六&#xff09…

硬件面试经典 100 题(71~90 题)

71、请问下图电路的作用是什么&#xff1f; 该电路实现 IIC 信号的电平转换&#xff08;3.3V 和 5V 电平转换&#xff09;&#xff0c;并且是双向通信的。 上下两路是一样的&#xff0c;只分析 SDA 一路&#xff1a; 1&#xff09; 从左到右通信&#xff08;SDA2 为输入状态&…

Golang | Leetcode Golang题解之第349题两个数组的交集

题目&#xff1a; 题解&#xff1a; func intersection(nums1 []int, nums2 []int) (res []int) {sort.Ints(nums1)sort.Ints(nums2)for i, j : 0, 0; i < len(nums1) && j < len(nums2); {x, y : nums1[i], nums2[j]if x y {if res nil || x > res[len(re…

Python基础和变量使用

1. 基础了解 1.1 运行方式 Python有多种运行方式&#xff0c;以下是几种常见的执行Python代码的方法&#xff1a; 交互式解释器&#xff1a; 打开终端或命令提示符&#xff0c;输入python或python3&#xff08;取决于你的系统配置&#xff09;&#xff0c;即可进入Python交互…

设计模式---构建者模式(Builder Pattern)

构建者模式&#xff08;Builder Pattern&#xff09; 是一种创建型设计模式&#xff0c;旨在将复杂对象的构建过程与其表示分离。它允许使用相同的构建过程创建不同的表示。该模式通常用于构建复杂对象&#xff0c;这些对象由多个部分组成或具有多个可选属性。 构建者模式的核…

Python做统计图之美

Python数据分析可视化 案例效果图 import pandas as pd import matplotlib.pyplot as plt import matplotlib# 数据 data {"房型": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],"住宅类型": ["普通宅", "普通宅", "普通宅", &q…

ffmpeg开发者视频剪辑器

5G 时代的来临&#xff0c;加速了视频类作品的创作&#xff0c;由于现在的流量越来越便宜&#xff0c;网速越来越快&#xff0c;特别是流量无限用套餐&#xff0c;大家更愿意去看视频作品&#xff0c;特别是抖音的兴起&#xff0c;更是加速了小视频的流量。不会剪辑的我们该如何…

内网安全:跨域攻击

目录 获取域信息 利用域信任密钥获取目标域 利用krbtgt哈希值获取目标域 内网中的域林&#xff1a; 很多大型企业都拥有自己的内网&#xff0c;一般通过域林进行共享资源。根据不同职能区分的部门&#xff0c;从逻辑上以 主域和子域进行区分&#xff0c;以方便统一管理。在…

选择排序(直接选择排序与堆排序的比较)

选择排序 选择排序时间复杂度 1. 直接选择排序思考⾮常好理解&#xff0c;但是效率不是很好。实际中很少使用&#xff0c;思路是先进行遍历找到元最小的元素&#xff0c;然后与第一个进行交换 2. 时间复杂度&#xff1a;O&#xff08;&#xff09; 3. 空间复杂度&#…

openharmony 南向开发基础:ohos自定义子系统,自定义部件,调用hilog部件,hilog日志封装傻瓜式教程

openharmony 南向开发基础:ohos自定义子系统,自定义部件,调用hilog部件,hilog日志封装 自定义单部件 关于开源鸿蒙的南向教程不多,很多都是从官方文档上抄的的例子,官网的例子不是很适合入门,写的很粗糙,不适合傻瓜阅读,毕竟对于刚入行鸿蒙的新手而言,gn语法就是第一劝退魔咒…

vue 路由用法 router-view

通过router-view 点击子路由显示子路由关于我们的内容&#xff0c;点击关于信息显示关于信息内容。

map/set和unordered_map/unordered_set的区别及使用情况

map/set和unordered_map/unordered_set的区别 容器底层数据结构是否有序实现版本复杂度迭代器map/set红黑树有序C98O(logN&#xff09;双向迭代器unordered_map/unordered_set哈希表/散列表无序C11O(1)单向迭代器 unordered_set无序的&#xff08;VS下&#xff09; void uno…

【机器学习】探索数据矿藏:Python中的AI大模型与数据挖掘创新实践

&#x1f496; 前言&#xff1a;探索数据矿藏1. &#x1f4ca;数据获取与预处理&#xff1a;AI大模型的燃料1.1 &#x1f310;数据获取&#xff1a;多样性与规模并重1.2 &#x1f9f9;数据清洗与处理&#xff1a;提升数据质量1.3 &#x1f50d;特征工程&#xff1a;挖掘数据的深…

蓝牙音视频远程控制协议(AVRCP) command跟response介绍

零.声明 本专栏文章我们会以连载的方式持续更新&#xff0c;本专栏计划更新内容如下&#xff1a; 第一篇:蓝牙综合介绍 &#xff0c;主要介绍蓝牙的一些概念&#xff0c;产生背景&#xff0c;发展轨迹&#xff0c;市面蓝牙介绍&#xff0c;以及蓝牙开发板介绍。 第二篇:Trans…

[Qt][QSS][下]详细讲解

目录 1.样式属性0.前言1.盒模型(Box Model) 2.常用控件样式属性1.按钮2.复选框3.单选框4.输入框5.列表6.菜单栏7.注意 1.样式属性 0.前言 QSS中的样式属性⾮常多&#xff0c;不需要都记住&#xff0c;核⼼原则是⽤到了就去查 ⼤部分的属性和CSS是⾮常相似的 QSS中有些属性&am…