微前端如何共享公共依赖(如 React、Vue)避免重复加载?
每个子应用都打包一份 React/Vue 会体积爆炸、且多份 React 实例导致状态不互通。解决方案:
- externals + CDN:主应用通过
<script>引入 React 并挂到 window,子应用 webpack 配externals: { react: 'React' }不打包,运行时复用 - Module Federation 的 shared:声明
shared: { react: { singleton: true } },由运行时保证只加载一份且版本协商 - qiankun 的 import-map / 共享依赖:通过构建插件统一去重
// webpack
externals: { react: 'React', 'react-dom': 'ReactDOM' }关键:依赖要单例(singleton),否则多个 React 实例会让 Context/hooks 失效。