前端工程化 词条目录
前端Wiki/词条/微前端

微前端

定义把巨石应用按业务域拆成可独立开发、独立部署的子应用,再在运行时组合成整体页面的架构

微前端解决的是「巨石应用」的规模问题:多个团队改一个仓库、一次发布牵全身、技术栈被锁死。拆成子应用后,每个团队各自开发部署、技术栈可异构(老的 Angular 与新的 React 共存)。主流落地方案:基座式路由分发(qiankun)、Web Components 天然隔离、Module Federation(webpack/Vite 生态,编译期共享依赖)、iframe(简单但通信与会话成本高)。

代价不小:沙箱与样式隔离是永远的坑、跨应用通信与状态共享要设计、首屏要加载多个子应用可能更慢、运维复杂度成倍上升。Q:什么时候做?答:团队与业务规模真的痛了再做。中小项目上微前端是把简单问题复杂化,单一应用 + 良好的模块化与 Monorepo 往往是更经济的方案。若确实要落地,建议先从独立部署能力做起:子应用能脱离基座单独运行,再谈集成方案,风险可控得多。

JavaScript
// 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() {}
⚠ 常见误区
🔗 相关词条微前端与部署策略分包与长效缓存
← 返回来源章节微前端与部署策略