全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-23 7 分钟 ✍️ juanwangdev

共享依赖版本管理

Module Federation 共享依赖需要正确管理版本,避免版本冲突。

版本冲突问题

JavaScript
主应用: vue@3.2.0
子应用A: vue@3.1.0
子应用B: vue@3.3.0

→ 运行时使用哪个版本?

共享配置

JavaScript
federation({
  shared: {
    vue: {
      singleton: true,           # 单例模式
      requiredVersion: '^3.0.0', # 最低版本要求
      strictVersion: false       # 是否严格版本
    }
  }
})

共享配置选项

选项说明
singleton强制使用单例
requiredVersion最低版本要求
strictVersion严格版本匹配
eager提前加载
version当前版本

注意:singleton 确保运行时只有一个 vue 实例。

singleton 单例模式

JavaScript
shared: {
  vue: {
    singleton: true  # 主应用和子应用共享同一 vue
  }
}

单例模式下:

  • 所有应用使用同一 vue 实例
  • 避免组件不兼容问题
  • 减少内存占用

版本检查

JavaScript
shared: {
  vue: {
    requiredVersion: '^3.2.0',
    strictVersion: true  # 严格版本检查
  }
}

strictVersion: true 时:

  • 版本不匹配会报错
  • 确保版本一致

版本降级处理

JavaScript
shared: {
  vue: {
    singleton: true,
    requiredVersion: '^3.0.0',
    strictVersion: false  # 允许降级
  }
}

strictVersion: false 时:

  • 主应用版本高,子应用使用主版本
  • 主应用版本低,子应用使用自己的版本

eager 提前加载

JavaScript
shared: {
  vue: {
    eager: true  # 提前加载不等待请求
  }
}

eager: true 时:

  • vue 在主应用启动时加载
  • 避免子应用加载时请求

多依赖共享

text
shared: {
  vue: { singleton: true },
  'vue-router': { singleton: true },
  pinia: { singleton: true },
  lodash: { eager: true }  # 工具库提前加载
}

版本冲突解决方案

方案适用场景
singleton核心框架强制单例
requiredVersion指定最低版本
strictVersion确保版本一致
eager关键依赖提前加载

要点总结

  • singleton 强制共享依赖单例
  • requiredVersion 设置最低版本
  • strictVersion 控制严格匹配
  • eager 提前加载避免延迟

📝 发现内容有误?点击此处直接编辑

← 上一篇 Module Federation 集成
下一篇 → 子应用构建与加载
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库