网易微前端架构实战:如何管理100+子应用而不崩
你知道网易有多少个前端项目吗?
超过 1000 个代码仓库、200+子应用、每天发布300次。
如果没有一套微前端治理系统,项目早炸了。
今天就来带你拆解网易微前端架构的核心——基座 + 动态加载 + 权限隔离 + 独立发布。
一、网易为什么早早就用上了微前端?
因为早年起就有大量频道、游戏门户、社区运营、CMS后台等:
- 功能多样、团队独立
 - 迭代频繁、部署不可等待
 - 技术栈各异:Vue2、Vue3、React、甚至还有 jQuery...
 
👇于是他们选择了模块化能力最强的方案:微前端架构(Micro Frontends)
二、整体架构图(网易实战版)

三、主子应用通信怎么做?(网易方案)
网易没有用 qiankun,而是基于内部封装的微前端 SDK,核心原理类似。
// 主应用提供通信桥
window.__MICRO_APP_EVENT_BUS__ = new EventTarget()
// 子应用监听事件
window.__MICRO_APP_EVENT_BUS__.addEventListener('global-refresh', () => {
window.location.reload()
})
// 主应用触发事件
window.__MICRO_APP_EVENT_BUS__.dispatchEvent(new Event('global-refresh'))
👉这种方式:
- 不侵入框架(Vue/React 通吃)
 - 不耦合代码,只用浏览器原生事件系统
 
四、部署与权限如何统一管理?
网易配套了一整套“发布平台 + 权限系统”,做到:
| 功能 | 说明 | 
|---|---|
| 独立部署 | 每个子应用都有独立 Jenkins/流水线 | 
| 权限接入 | 每个子应用上线必须绑定角色权限模块 | 
| 域名配置 | 主应用统一路由配置,动态注入 iframe 或模块 | 
| 沙箱运行 | 子应用运行在 iframe + ShadowDOM + CSP 下,完全隔离 | 
五、实战代码:子应用注册和加载
// 主应用注册子应用(JSON 配置化)
const microAppList = [  {    name: 'content-manage',    entry: 'https://cdn.xxx.com/apps/content-manage/index.html',    activeRule: '/content'  },  {    name: 'user-center',    entry: 'https://cdn.xxx.com/apps/user-center/index.html',    activeRule: '/user'  }]
// 动态加载示例(简化版)
function loadMicroApp(appConfig) {
  const iframe = document.createElement('iframe')
iframe.src = appConfig.entry
iframe.style = 'width:100%;height:100%;border:none'
  document.getElementById('micro-container').appendChild(iframe)
}
六、网易踩过的3个坑(干货!)
| 坑 | 解决方案 | 
|---|---|
| 子应用样式污染 | 每个子应用编译时加 prefixCls,搭配 ShadowDOM 隔离 | 
| 子应用登录状态不一致 | 所有项目统一通过 Cookie + SSO 网关授权 | 
| 子应用发布顺序冲突 | 发布系统支持灰度 + 停发自动依赖检查 | 
七、总结:你能从中学到什么?
- 不要迷信 qiankun,自己也能搞微前端(原理简单)
 - 微前端不仅是技术,更是权限、部署、治理一整套体系
 - 想要稳定运行,必须有主子应用契约 + 灰度发布 + 统一通信策略
 
尾声:
“你看到的稳定,其实是他们踩了无数坑后的优雅。”
作者:金泽宸
来源:juejin.cn/post/7510653719672094739
                            来源:juejin.cn/post/7510653719672094739