微前端如何共享公共依赖(如 React、Vue)避免重复加载?

每个子应用都打包一份 React/Vue 会体积爆炸、且多份 React 实例导致状态不互通。解决方案:

  1. externals + CDN:主应用通过 <script> 引入 React 并挂到 window,子应用 webpack 配 externals: { react: 'React' } 不打包,运行时复用
  2. Module Federation 的 shared:声明 shared: { react: { singleton: true } },由运行时保证只加载一份且版本协商
  3. qiankun 的 import-map / 共享依赖:通过构建插件统一去重
// webpack
externals: { react: 'React', 'react-dom': 'ReactDOM' }

关键:依赖要单例(singleton),否则多个 React 实例会让 Context/hooks 失效。

同分类其他题目