前端微前端:大型应用的模块化解决方案

前端微前端:大型应用的模块化解决方案

毒舌时刻

前端微前端?这不是过度设计吗?

"我的应用不大,不需要微前端"——结果应用越来越大,维护困难,
"微前端太复杂了,不如一个大单体"——结果团队协作困难,部署冲突,
"我用iframe就够了"——结果性能差,用户体验差。

醒醒吧,微前端不是银弹,但对于大型应用来说,它是一个有效的解决方案!

为什么你需要这个?

  • 团队协作:不同团队可以独立开发和部署
  • 技术栈灵活:不同微前端可以使用不同的技术栈
  • 独立部署:单个微前端可以独立部署,不影响其他部分
  • 可扩展性:可以轻松添加新的微前端

反面教材

<!-- 反面教材:使用iframe实现微前端 --> <!DOCTYPE html> <html> <head> <title>主应用</title> </head> <body> <h1>主应用</h1> <!-- 使用iframe加载微前端 --> <iframe src="https://micro-app1.example.com"></iframe> <iframe src="https://micro-app2.example.com"></iframe> </body> </html> 

正确的做法

// 正确的做法:使用Module Federation // 主应用webpack配置 const { ModuleFederationPlugin } = require('webpack').container; module.exports = { plugins: [ new ModuleFederationPlugin({ name: 'host', remotes: { microApp1: 'microApp1@http://localhost:3001/remoteEntry.js', microApp2: 'microApp2@http://localhost:3002/remoteEntry.js' }, shared: { react: { singleton: true, requiredVersion: '^18.0.0' }, 'react-dom': { singleton: true, requiredVersion: '^18.0.0' } } }) ] }; // 微应用1webpack配置 const { ModuleFederationPlugin } = require('webpack').container; module.exports = { plugins: [ new ModuleFederationPlugin({ name: 'microApp1', filename: 'remoteEntry.js', exposes: { './App': './src/App' }, shared: { react: { singleton: true, requiredVersion: '^18.0.0' }, 'react-dom': { singleton: true, requiredVersion: '^18.0.0' } } }) ] }; // 主应用中使用微应用 import React, { lazy, Suspense } from 'react'; // 懒加载微应用 const MicroApp1 = lazy(() => import('microApp1/App')); const MicroApp2 = lazy(() => import('microApp2/App')); function App() { return ( <div> <h1>主应用</h1> <Suspense fallback={<div>加载中...</div>}> <MicroApp1 /> <MicroApp2 /> </Suspense> </div> ); } // 正确的做法:使用Single-SPA // 主应用配置 import { registerApplication, start } from 'single-spa'; // 注册微应用 registerApplication({ name: 'micro-app-1', app: () => import('@org/micro-app-1'), activeWhen: (location) => location.pathname.startsWith('/micro-app-1'), customProps: { authToken: 'token' } }); registerApplication({ name: 'micro-app-2', app: () => import('@org/micro-app-2'), activeWhen: (location) => location.pathname.startsWith('/micro-app-2') }); // 启动应用 start(); // 微应用配置 import { mountRootParcel } from 'single-spa'; // 导出生命周期函数 export const bootstrap = async () => { console.log('微应用1启动'); }; export const mount = async (props) => { console.log('微应用1挂载', props); // 挂载应用 const el = document.getElementById('micro-app-1'); // 渲染应用 return Promise.resolve(); }; export const unmount = async () => { console.log('微应用1卸载'); // 卸载应用 return Promise.resolve(); }; 

毒舌点评

看看,这才叫前端微前端!不是简单地使用iframe,而是使用Module Federation或Single-SPA等专业的微前端方案。

记住,微前端不是为了拆分而拆分,而是为了解决大型应用的维护和协作问题。它需要合理的架构设计和团队协作。

所以,别再觉得微前端复杂了,它是大型应用的必然选择!

总结

  • Module Federation:Webpack 5的内置功能,支持模块共享
  • Single-SPA:最早的微前端框架,支持多种技术栈
  • Qiankun:基于Single-SPA的微前端方案,提供了更多功能
  • 独立部署:每个微前端可以独立构建和部署
  • 技术栈灵活:不同微前端可以使用不同的技术栈
  • 模块共享:共享公共依赖,减少重复加载
  • 路由管理:统一的路由管理,实现微前端间的导航
  • 状态管理:跨微前端的状态管理方案

微前端,让大型应用的开发和维护变得更加简单!

Read more

手把手教你配置飞书 OpenClaw 机器人,打造企业级 AI 智能助手

手把手教你配置飞书 OpenClaw 机器人,打造企业级 AI 智能助手

目标:在飞书(Feishu/Lark)中添加 OpenClaw 机器人,实现 7×24 小时 AI 智能对话与自动化办公。 OpenClaw GitHub | feishu-openclaw 桥接项目 想让你的机器人具备语音交互能力?试试 Seeed Studio 的 ReSpeaker 系列吧! 我会后续出reSpeaker XVF3800与Openclaw联动实现语音输入的教程,完全开放源码。 reSpeaker XVF3800 是一款基于 XMOS XVF3800 芯片的专业级 4 麦克风圆形阵列麦克风,即使在嘈杂的环境中也能清晰地拾取目标语音。它具备双模式、360° 远场语音拾取(最远 5 米)、自动回声消除 (AEC)、自动增益控制 (AGC)、声源定位 (DoA)、去混响、波束成形和噪声抑制等功能。

OpenClaw 完整安装与配置文档(包含Minimax/deepseek模型接入、飞书机器人接入)

OpenClaw 完整安装与配置文档 文档说明:本文档适用于 Linux 系统(Debian/Ubuntu 系列),详细梳理 OpenClaw 从基础环境准备、核心程序安装,到模型配置(Minimax/DeepSeek)、飞书渠道对接的全流程,所有交互式配置选项完整呈现,步骤可直接复制执行,适配新手操作。 适用场景:OpenClaw 新手部署、企业内部飞书机器人对接、Minimax/DeepSeek 模型配置 前置说明: 1. 服务器需联网,确保能访问 GitHub、npm、飞书官网; 2. 操作全程使用终端命令行,建议使用远程工具(如 Xshell、Putty)连接服务器; 3. 复制命令时需完整复制,避免遗漏特殊符号; 4. 所有交互式配置选项均完整列出,按文档指引选择即可。 5. 拥有root用户/sudo权限。

手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人

手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人

手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人 当前版本 OpenClaw(2026.2.22-2)已内置飞书插件,无需额外安装。 你有没有想过,在飞书里直接跟 AI 对话,就像跟同事聊天一样自然? 今天这篇文章,带你从零开始,用 OpenClaw 搭建一个飞书 AI 机器人。全程命令行操作,10 分钟搞定。 一、准备工作 1.1 安装 Node.js(版本 ≥ 22) OpenClaw 依赖 Node.js 运行,首先确保你的 Node 版本不低于 22。 推荐使用 nvm 管理 Node

从人类视频到机器人跳舞:BeyondMimic 全流程解析与 rl_sar 部署实践

从人类视频到机器人跳舞:BeyondMimic 全流程解析与 rl_sar 部署实践

0. 前言 让人形机器人学会跳舞,听起来像是科幻电影中的场景,但在强化学习和运动模仿技术的推动下,这件事正在变得越来越现实。本文将完整介绍一条从"人类 RGB 视频"到"真实机器人跳舞"的技术链路:首先通过视觉算法从视频中提取人体运动轨迹,然后将人体模型重定向到机器人关节空间,接着在仿真环境中进行强化学习训练,最后在 MuJoCo 中验证并部署到真实的 Unitree G1 人形机器人上。 整条流程涉及四个核心开源项目:GVHMR(视频到人体模型)、GMR(人体到机器人重定向)、BeyondMimic(强化学习训练框架)、以及 rl_sar(仿真验证与真机部署框架)。本文不仅会逐一拆解每个环节的原理和操作步骤,还会深入分析 BeyondMimic 的算法设计,并详细记录将训练产物迁移到 rl_sar 项目中进行 sim2sim 和 sim2real 部署时遇到的关键问题与解决方案。 下图展示了