Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
将 React 应用嵌入另一个 React 应用:微前端方案与实践_创想鸟

将 React 应用嵌入另一个 React 应用:微前端方案与实践

将 react 应用嵌入另一个 react 应用:微前端方案与实践

本文介绍了将一个 React 应用(子应用)嵌入到另一个 React 应用(父应用)中的方法,避免使用 iframe。核心方案是采用微前端架构,将子应用构建为独立的模块,然后在父应用中动态加载和渲染。文章将探讨微前端的概念,并提供一些可行的框架和工具,帮助开发者实现 React 应用的集成。

将一个 React 应用嵌入到另一个 React 应用中,而不使用 iframe,是一个常见的需求,尤其是在构建大型、模块化的前端应用时。iframe 虽然简单易用,但存在诸多缺点,例如 SEO 不友好、通信复杂、样式隔离性差等。更好的解决方案是采用微前端架构。

什么是微前端?

微前端是一种类似于微服务的架构风格,它将前端应用拆分成更小、更易于管理和部署的独立模块。每个模块可以由不同的团队开发,使用不同的技术栈,最终组合成一个完整的应用。

微前端的核心思想是将大型前端应用分解为多个自治的、可独立部署的小型应用,这些小型应用可以在同一个页面上无缝集成。

立即学习“前端免费学习笔记(深入)”;

实现微前端的几种方案

实现微前端的方式有很多种,以下是一些常见的方案:

Web Components: 使用 Web Components 技术将子应用封装成自定义元素,然后在父应用中像普通 HTML 元素一样使用。这种方式的优点是技术栈无关,但需要处理组件之间的通信和状态管理。

Module Federation (Webpack 5): Module Federation 是 Webpack 5 提供的一项功能,允许不同的 Webpack 构建的应用共享代码和依赖。通过 Module Federation,可以将子应用构建为远程模块,然后在父应用中动态加载和使用。

Single-SPA: Single-SPA 是一个 JavaScript 框架,用于组合多个单页应用。它可以将不同的应用加载到同一个页面上,并处理应用之间的路由和状态管理。

Iframe (不推荐): 虽然不推荐,但在某些特定场景下,iframe 仍然可以作为一种快速的解决方案。但是,需要注意 iframe 带来的各种问题,并尽量避免使用。

使用 Module Federation 实现微前端的示例

以下是一个使用 Module Federation 实现微前端的简单示例:

子应用 (Child App):

webpack.config.js:

const { ModuleFederationPlugin } = require('webpack').container;const path = require('path');module.exports = {  entry: './src/index',  mode: 'development',  devServer: {    port: 3001,    static: {      directory: path.join(__dirname, 'public'),    },  },  output: {    publicPath: 'auto',  },  module: {    rules: [      {        test: /.jsx?$/,        loader: 'babel-loader',        exclude: /node_modules/,        options: {          presets: ['@babel/preset-react'],        },      },    ],  },  plugins: [    new ModuleFederationPlugin({      name: 'childApp',      filename: 'remoteEntry.js',      exposes: {        './ChildComponent': './src/ChildComponent',      },      shared: { react: { singleton: true }, 'react-dom': { singleton: true } },    }),  ],};

src/ChildComponent.jsx:

import React from 'react';const ChildComponent = () => {  return 

Hello from Child App!

;};export default ChildComponent;

父应用 (Parent App):

webpack.config.js:

const { ModuleFederationPlugin } = require('webpack').container;const path = require('path');module.exports = {  entry: './src/index',  mode: 'development',  devServer: {    port: 3000,    static: {      directory: path.join(__dirname, 'public'),    },  },  output: {    publicPath: 'auto',  },  module: {    rules: [      {        test: /.jsx?$/,        loader: 'babel-loader',        exclude: /node_modules/,        options: {          presets: ['@babel/preset-react'],        },      },    ],  },  plugins: [    new ModuleFederationPlugin({      name: 'parentApp',      remotes: {        childApp: 'childApp@http://localhost:3001/remoteEntry.js',      },      shared: { react: { singleton: true }, 'react-dom': { singleton: true } },    }),  ],};

src/App.jsx:

import React, { Suspense } from 'react';const ChildComponent = React.lazy(() => import('childApp/ChildComponent'));const App = () => {  return (    

Parent App

<Suspense fallback={
Loading...
}>
);};export default App;

在这个示例中,子应用暴露了一个名为 ChildComponent 的组件。父应用通过 Module Federation 加载子应用的 remoteEntry.js 文件,并动态地引入和渲染 ChildComponent。

注意事项:

确保父应用和子应用共享相同的 React 和 ReactDOM 版本,以避免冲突。使用 Suspense 组件处理异步加载组件时的加载状态。配置合适的 publicPath,确保资源文件能够正确加载。

总结

微前端是一种强大的架构模式,可以帮助开发者构建大型、模块化的前端应用。通过将应用拆分成更小、更易于管理和部署的独立模块,可以提高开发效率、降低维护成本,并实现技术栈的解耦。选择合适的微前端方案,并根据实际情况进行调整,是成功实施微前端的关键。

以上就是将 React 应用嵌入另一个 React 应用:微前端方案与实践的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1520374.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
解决 mouseenter 重复触发:避免因样式修改导致的布局抖动
上一篇 2025年12月20日 13:16:34
React中利用useParams和useMemo高效过滤初始状态数据
下一篇 2025年12月20日 13:16:46

相关推荐

  • 豆包ai网页版入口 豆包ai网页版入口在线使用2025

    豆包ai网页版入口 豆包ai网页版入口在线使用2025豆包ai网页版入口 豆包ai网页版入口在线使用2025豆包ai网页版入口 豆包ai网页版入口在线使用2025豆包ai网页版入口 豆包ai网页版入口在线使用2025

    豆包AI网页版可通过多种方式访问。1.通过官方网站访问,搜索“豆包AI”找到官网并点击“网页版入口”链接;2.通过搜索引擎直接搜索“豆包AI网页版”或“豆包AI在线使用”,选择可信来源的链接;3.关注豆包AI官方社交媒体平台,获取发布的网页版入口信息;4.通过朋友或同事分享的链接访问。使用步骤包括:…

    2026年10月5日 • 用户投稿
    000
  • Craft CMS 元素预加载:自定义参数的正确语法与常见陷阱

    本教程旨在解决Craft CMS中进行元素预加载时,为关联元素定义自定义参数的常见语法错误。文章将深入探讨在PHP环境中,如何正确使用关联数组语法[‘key’ =youjiankuohaophpcn value]来替代JavaScript风格的对象字面量{key: value…

    2026年10月5日
    000
  • composer.lock文件和composer.json文件冲突怎么办

    composer.lock文件和composer.json文件冲突怎么办composer.lock文件和composer.json文件冲突怎么办composer.lock文件和composer.json文件冲突怎么办composer.lock文件和composer.json文件冲突怎么办

    composer.lock与composer.json不一致时应通过Composer命令处理。修改json后需运行composer update更新lock文件;若他人已提交新lock,则运行composer install同步依赖,确保环境一致。 当 composer.lock 和 compose…

    2026年10月5日 • 用户投稿
    000
  • 夸克网站网址 夸克网站官方网址

    夸克网站网址 夸克网站官方网址夸克网站网址 夸克网站官方网址夸克网站网址 夸克网站官方网址夸克网站网址 夸克网站官方网址

    夸克网站官方网址是https://www.quark.cn/,提供AI搜索、文件解析、网盘管理、工具集合等功能,整合多源内容并支持跨设备同步,具备简洁界面与良好使用体验。 夸克网站官方网址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克网站官方网址,感兴趣的网友一起随小编来瞧瞧吧! h…

    2026年10月5日 • 用户投稿
    000
  • 豆包AI在线写作 豆包AI在线写作入口2025

    豆包AI在线写作 豆包AI在线写作入口2025豆包AI在线写作 豆包AI在线写作入口2025豆包AI在线写作 豆包AI在线写作入口2025豆包AI在线写作 豆包AI在线写作入口2025

    2025年豆包AI将升级为智能创作伙伴,提供个性化写作服务。要访问豆包AI在线写作入口,需1.访问字节跳动官网;2.搜索“豆包AI”或“豆包AI在线写作”;3.查找官方入口链接;4.注册或登录账号;5.选择不同模式开始智能写作。其优势包括智能内容生成、个性化写作风格、创意激发、内容优化及多语言支持。…

    2026年10月5日 • 用户投稿
    100
  • Java怎么处理高并发 Java多线程与锁粒度控制技巧

    Java怎么处理高并发 Java多线程与锁粒度控制技巧Java怎么处理高并发 Java多线程与锁粒度控制技巧Java怎么处理高并发 Java多线程与锁粒度控制技巧Java怎么处理高并发 Java多线程与锁粒度控制技巧

    高并发场景下提升java处理能力需合理使用多线程与锁。1. 使用线程池(如executorservice)管理线程,避免资源耗尽;2. 合理拆分任务,避免线程调度开销或cpu利用率不足;3. 异步化i/o操作,减少线程阻塞;4. 控制锁粒度,优先使用reentrantlock以获得更灵活的锁机制;5…

    2026年10月5日 • 用户投稿
    000
  • 被尘封的故事创造模式怎么造武器 创造模式玩法教程

    被尘封的故事创造模式怎么造武器 创造模式玩法教程被尘封的故事创造模式怎么造武器 创造模式玩法教程被尘封的故事创造模式怎么造武器 创造模式玩法教程被尘封的故事创造模式怎么造武器 创造模式玩法教程

    在《被尘封的故事》创造模式中,虽然玩家拥有无限资源,但武器无法直接获取,必须通过合成方式制作。许多新人玩家误以为创造模式可以一键获得所有装备,实际上仍需遵循游戏内的合成机制。关键在于:先了解配方,再进行制作。 第一步是获取工作台。在创造模式的物品栏中,进入“工具”分类即可找到工作台,点击添加至背包后…

    2026年10月5日 • 用户投稿
    600
  • 全民K歌如何快速找到歌房

    全民K歌如何快速找到歌房全民K歌如何快速找到歌房全民K歌如何快速找到歌房全民K歌如何快速找到歌房

    想了解在全民k歌app中如何找到并创建歌房?下面为你详细介绍操作步骤。 1、 首先打开全民K歌应用,进入主界面后,点击底部导航栏中的“我的”页面。 2、 在“我的”页面中,找到并点击“创建房间”选项。 3、 接着选择你喜欢的歌房模式,设置好房间权限(如公开或私密),然后点击“创建房间”完成创建。 歌…

    2026年10月5日 • 用户投稿
    000
  • 豆包人工智能在线入口 豆包人工智能网页版在线入口

    豆包人工智能在线入口 豆包人工智能网页版在线入口豆包人工智能在线入口 豆包人工智能网页版在线入口豆包人工智能在线入口 豆包人工智能网页版在线入口豆包人工智能在线入口 豆包人工智能网页版在线入口

    豆包的使用方法包括打开官方网页、注册登录、开始对话和获取答案。1. 打开网页:点击提供的链接进入豆包官网;2. 注册/登录:新用户注册或已有用户登录;3. 开始对话:在输入框提出问题或需求,如总结新闻、写文章或翻译;4. 获取答案:根据豆包的回复进一步提问或修改内容。豆包适用于信息查询、内容创作、学…

    2026年10月5日 • 用户投稿
    000
  • laravel Horizon怎么监控和管理队列_laravel Horizon队列监控与管理

    Laravel Horizon可解决队列延迟与失败问题,通过安装composer require laravel/horizon并发布配置文件,设置QUEUE_CONNECTION=redis;启动php artisan horizon服务后,结合Supervisor后台运行;访问/horizon界…

    2026年10月5日
    100
  • Android RecyclerView在屏幕旋转时数据重复叠加的解决方案

    Android RecyclerView在屏幕旋转时数据重复叠加的解决方案Android RecyclerView在屏幕旋转时数据重复叠加的解决方案Android RecyclerView在屏幕旋转时数据重复叠加的解决方案Android RecyclerView在屏幕旋转时数据重复叠加的解决方案

    本文旨在解决Android应用中RecyclerView在屏幕旋转等配置变更时出现数据重复加载和UI叠加的问题。核心在于理解Android生命周期中Activity和Fragment的重建机制,并通过检查savedInstanceState避免重复添加Fragment,同时利用ViewModel确保…

    2026年10月5日 • 用户投稿
    100
  • Yii框架中的ActiveDataProvider:便捷地获取数据

    在开发web应用程序的过程中,数据管理往往是一个重要的方面。%ignore_a_1%框架为此提供了许多强大的数据处理工具,其中一个就是activedataprovider。 ActiveDataProvider是一个查询数据模型、将结果按特定格式组织,并支持分页和排序的工具。它通常用于在Yii应用程…

    用户投稿 2026年10月5日
    000
  • 怎样用免费工具做艺术PPT_免费艺术风格PPT的制作方法

    怎样用免费工具做艺术PPT_免费艺术风格PPT的制作方法怎样用免费工具做艺术PPT_免费艺术风格PPT的制作方法怎样用免费工具做艺术PPT_免费艺术风格PPT的制作方法怎样用免费工具做艺术PPT_免费艺术风格PPT的制作方法

    可借助轻竹办公PPT、Tome AI、PPT美化工具和Canva等免费工具制作艺术风格PPT;2. 轻竹办公基于清华智谱AI,输入主题如“印象派艺术展策划”,选艺术风模板,30秒生成含封面、目录的初稿,可预览调整后导出PPTX;3. Tome AI将描述性语句如“当代水墨艺术与数字媒介融合展示”转化…

    2026年10月5日 • 用户投稿
    000
  • 美团外卖满减券领取入口_美团外卖满减券使用攻略

    美团外卖满减券领取入口_美团外卖满减券使用攻略美团外卖满减券领取入口_美团外卖满减券使用攻略美团外卖满减券领取入口_美团外卖满减券使用攻略美团外卖满减券领取入口_美团外卖满减券使用攻略

    未使用满减券或未满足使用条件导致订单金额较高。可通过美团App首页活动、搜索关键词、完成任务及微信小程序等途径领取满减券,并在有效期内达到最低消费后使用以降低成本。 如果您在使用美团外卖时发现订单金额较高,可能是因为未使用平台提供的满减优惠券。通过领取并合理使用满减券,可以有效降低用餐成本。以下是具…

    2026年10月5日 • 用户投稿
    200
  • 全新小鹏P7和G7 Ultra全场景VLA将上车 何小鹏发布演示

    全新小鹏P7和G7 Ultra全场景VLA将上车 何小鹏发布演示全新小鹏P7和G7 Ultra全场景VLA将上车 何小鹏发布演示全新小鹏P7和G7 Ultra全场景VLA将上车 何小鹏发布演示全新小鹏P7和G7 Ultra全场景VLA将上车 何小鹏发布演示

    8月22日,小鹏汽车董事长何小鹏宣布:全新小鹏p7与g7 ultra将搭载全场景vla系统,标志着小鹏在智能驾驶领域迈入新阶段。他指出,小鹏全场景vla不仅具备高水准、高智慧,更在安全性上实现全面升级,并同步发布了一组该系统的实车演示画面。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费…

    2026年10月5日 • 用户投稿
    100
  • 告别繁琐手动集成:如何使用miloschuman/yii2-highcharts-widget轻松为Yii2应用添加交互式图表

    告别繁琐手动集成:如何使用miloschuman/yii2-highcharts-widget轻松为Yii2应用添加交互式图表告别繁琐手动集成:如何使用miloschuman/yii2-highcharts-widget轻松为Yii2应用添加交互式图表告别繁琐手动集成:如何使用miloschuman/yii2-highcharts-widget轻松为Yii2应用添加交互式图表告别繁琐手动集成:如何使用miloschuman/yii2-highcharts-widget轻松为Yii2应用添加交互式图表

    可以通过一下地址学习composer:学习地址 数据可视化之痛:Yii2 项目中图表集成的那些烦恼 在我们的Web应用开发中,展示数据报表和趋势图几乎是不可避免的需求。想象一下,你正在为一款管理系统开发一个数据仪表盘,需要展示用户的活跃度、销售额增长曲线,甚至是全球用户分布地图。Highcharts…

    2026年10月5日 • 用户投稿
    000
  • 如何在Java中使用注解功能 Java注解定义与应用场景

    如何在Java中使用注解功能 Java注解定义与应用场景如何在Java中使用注解功能 Java注解定义与应用场景如何在Java中使用注解功能 Java注解定义与应用场景如何在Java中使用注解功能 Java注解定义与应用场景

    java中的注解功能本质上是为代码添加元数据的方式,其核心作用在于提供配置、编译检查、代码生成及运行时动态调整的能力。1. 注解本身不直接影响代码执行逻辑,但通过工具、框架或运行时环境读取和处理,能实现丰富的功能;2. 使用注解涉及三个步骤:定义注解(使用@interface关键字,并通过元注解如@…

    2026年10月5日 • 用户投稿
    000
  • win10 NVIDIA显卡驱动安装失败 win10 N卡驱动程序安装失败的解决方案

    win10 NVIDIA显卡驱动安装失败 win10 N卡驱动程序安装失败的解决方案win10 NVIDIA显卡驱动安装失败 win10 N卡驱动程序安装失败的解决方案win10 NVIDIA显卡驱动安装失败 win10 N卡驱动程序安装失败的解决方案win10 NVIDIA显卡驱动安装失败 win10 N卡驱动程序安装失败的解决方案

    首先优化网络并重新下载驱动,再进入安全模式用DDU彻底清除旧驱动残留,接着手动下载驱动并以Windows 8兼容模式及管理员身份安装,最后临时关闭杀毒软件与防火墙确保安装顺利完成。 如果您尝试在Windows 10系统上安装NVIDIA显卡驱动,但安装程序报错或中途退出,则可能是由于网络问题、旧驱动…

    2026年10月5日 • 用户投稿
    000
  • Seer如何预览Office文档_Seer预览Word和Excel文档的步骤

    Seer如何预览Office文档_Seer预览Word和Excel文档的步骤Seer如何预览Office文档_Seer预览Word和Excel文档的步骤Seer如何预览Office文档_Seer预览Word和Excel文档的步骤Seer如何预览Office文档_Seer预览Word和Excel文档的步骤

    首先确认Seer支持Office文件类型,检查并添加.docx和.xlsx扩展名至Quick Look预览引擎;其次确保已安装Microsoft Office或兼容套件,以提供必要文件支持;接着通过终端命令验证并修复Quick Look插件,确保Microsoft相关插件正常加载;若原生支持不足,可…

    2026年10月5日 • 用户投稿
    1300
  • 英特尔酷睿 Ultra 芯赋能!华硕灵耀 14 Air酷睿版:轻薄本市场的性能与便携标杆

    英特尔酷睿 Ultra 芯赋能!华硕灵耀 14 Air酷睿版:轻薄本市场的性能与便携标杆英特尔酷睿 Ultra 芯赋能!华硕灵耀 14 Air酷睿版:轻薄本市场的性能与便携标杆英特尔酷睿 Ultra 芯赋能!华硕灵耀 14 Air酷睿版:轻薄本市场的性能与便携标杆英特尔酷睿 Ultra 芯赋能!华硕灵耀 14 Air酷睿版:轻薄本市场的性能与便携标杆

    当下轻薄本市场 “内卷” 加剧,用户对设备的性能释放、便携属性及续航能力提出了更高标准。华硕灵耀 14 air 酷睿版本凭借独特的产品设计与英特尔酷睿 ultra 处理器的硬核性能,在众多竞品中崭露头角,成为不少职场人、专业创作者的优先选择,为用户带来兼顾高效与便携的使用体验。 外观:极致轻薄 + …

    2026年10月5日 • 用户投稿
    400

发表回复

登录后才能评论
关注微信