微前端解决的是「巨石应用」的规模问题:多个团队改一个仓库、一次发布牵全身、技术栈被锁死。拆成子应用后,每个团队各自开发部署、技术栈可异构(老的 Angular 与新的 React 共存)。主流落地方案:基座式路由分发(qiankun)、Web Components 天然隔离、Module Federation(webpack/Vite 生态,编译期共享依赖)、iframe(简单但通信与会话成本高)。
代价不小:沙箱与样式隔离是永远的坑、跨应用通信与状态共享要设计、首屏要加载多个子应用可能更慢、运维复杂度成倍上升。Q:什么时候做?答:团队与业务规模真的痛了再做。中小项目上微前端是把简单问题复杂化,单一应用 + 良好的模块化与 Monorepo 往往是更经济的方案。若确实要落地,建议先从独立部署能力做起:子应用能脱离基座单独运行,再谈集成方案,风险可控得多。
// qiankun 基座注册子应用(最主流的运行时集成) import { registerMicroApps, start } from 'qiankun'; registerMicroApps([ { name: 'react-app', entry: '//localhost:7100', // 子应用独立部署地址 container: '#sub-container', // 挂载到基座的容器 activeRule: '/react' // 命中该路由时加载子应用 }, { name: 'vue-app', entry: '//localhost:7101', container: '#sub-container', activeRule: '/vue' } ]); start({ prefetch: true, sandbox: { strictStyleIsolation: true } }); // 子应用只需导出生命周期钩子: // export async function bootstrap() {} // export async function mount(props) { 渲染到 props.container } // export async function unmount() {}