如何实现Angular多微应用既可独立运行也可整合为单项目运行
你的需求完全可以实现,这是Angular生态下微前端/多项目架构的典型适用场景,用Angular CLI原生支持的monorepo(多项目工作区)能力就能快速搭出符合要求的原型,不需要引入额外的复杂框架。
核心实现逻辑
- 第一步:创建Angular多项目工作区,运行命令
ng new my-workspace --no-create-application,这个工作区就是后续跑在4200端口的主应用承载容器 - 第二步:依次创建子微应用,在工作区根目录下分别执行:
ng generate application resume-builder(简历生成器)ng generate application poll(投票)ng generate application forum(论坛)
生成的每个子应用都拥有独立的依赖、配置、启动逻辑,可单独开发、运行、打包
- 第三步:配置各应用启动端口,打开工作区根目录的
angular.json文件,分别找到每个应用的serve.options.port配置项,主应用设为4200、简历生成器设为4201、投票设为4202,后续启动对应应用时会自动使用配置的端口 - 第四步:配置主应用路由聚合,主应用的路由配置中使用
loadChildren懒加载规则,将各个子应用的根路由模块挂载到主应用的对应路径下,比如访问主应用/resume路径时自动加载简历生成器子应用的路由模块 - 第五步:实现单独下线能力,主应用新增路由守卫和全局配置开关,需要下线某一个子应用时,只需修改对应开关配置,路由守卫会自动拦截该子应用对应的所有路径请求,跳转至维护提示页,不需要修改子应用代码,也不需要重启主应用服务,完全不影响其他模块的正常访问。
原型验证流程
- 分别启动三个应用服务:
- 主应用执行
ng serve,访问localhost:4200 - 简历生成器执行
ng serve resume-builder,访问localhost:4201 - 投票应用执行
ng serve poll,访问localhost:4202
- 主应用执行
- 验证独立运行能力:直接访问4201、4202端口,可正常打开对应子应用的完整功能
- 验证聚合访问能力:访问4200端口下的
/resume、/poll、/forum路径,可正常加载对应子应用的功能 - 验证单独下线能力:修改主应用的下线开关配置,刷新4200端口的
/resume路径会跳转至维护页,其余路径、子应用的独立端口访问均不受影响,迭代修复完成后只需重新打开开关即可恢复主应用对该模块的访问。
内容的提问来源于stack exchange,提问作者devZ
相关产品推荐
相关产品推荐

