Angular10中如何为education、transport模块搭建规范文件夹结构
Angular 10 业务模块标准化目录结构方案
核心设计思路
完全匹配你当前规划的业务层级,严格遵循Angular模块化开发规范,拆分粒度刚好适配后续懒加载、权限隔离、公共逻辑抽离的需求,可有效避免文件摆放混乱、跨目录依赖的常见问题。
完整目录层级(从src/app根目录开始)
app.module.ts根模块:仅注册全局通用依赖,不直接挂载任何业务组件core/全局核心目录:存放和业务无关的全局拦截器、路由守卫、通用服务,所有模块仅在这里导入一次shared/全局共享目录:存放跨业务复用的通用UI组件、管道、指令,不存放特定业务逻辑education/教育业务一级入口education.module.ts教育业务根模块education-routing.module.ts教育业务路由配置school/中小学二级子板块school.module.ts中小学独立子模块,支持单独懒加载、挂载专属路由守卫school-routing.module.ts中小学板块路由配置1std/一年级组件目录1std.component.ts1std.component.html1std.component.css1std.component.spec.ts单元测试文件
2std/二年级组件目录2std.component.ts2std.component.html2std.component.css2std.component.spec.ts
3std/三年级组件目录3std.component.ts3std.component.html3std.component.css3std.component.spec.ts
college/高等教育二级子板块college.module.ts高等教育独立子模块college-routing.module.ts高等教育板块路由配置arts/文科专业组件目录arts.component.tsarts.component.htmlarts.component.cssarts.component.spec.ts
engg/工程专业组件目录engg.component.tsengg.component.htmlengg.component.cssengg.component.spec.ts
diploma/专科/文凭类组件目录diploma.component.tsdiploma.component.htmldiploma.component.cssdiploma.component.spec.ts
transport/交通业务一级入口transport.module.ts交通业务根模块transport-routing.module.ts交通业务路由配置cycle/自行车二级子板块cycle.module.ts自行车独立子模块cycle-routing.module.ts自行车板块路由配置small/小型自行车组件目录small.component.tssmall.component.htmlsmall.component.csssmall.component.spec.ts
medium/中型自行车组件目录medium.component.tsmedium.component.htmlmedium.component.cssmedium.component.spec.ts
large/大型自行车组件目录large.component.tslarge.component.htmllarge.component.csslarge.component.spec.ts
bike/摩托车二级子板块bike.module.ts摩托车独立子模块bike-routing.module.ts摩托车板块路由配置pulsar/Pulsar摩托组件目录pulsar.component.tspulsar.component.htmlpulsar.component.csspulsar.component.spec.ts
honda/本田摩托组件目录honda.component.tshonda.component.htmlhonda.component.csshonda.component.spec.ts
- 注:原规划中的
hundai为拼写错误,对应现代品牌的正确拼写为hyundai,请按正确拼写命名目录 hyundai/现代摩托组件目录hyundai.component.tshyundai.component.htmlhyundai.component.csshyundai.component.spec.ts
落地实操注意事项
- 所有一级、二级业务模块统一在根路由中配置懒加载,不要直接把业务组件挂载到根路由下,示例配置:
根路由懒加载写法:
path: 'education', loadChildren: () => import('./education/education.module').then(m => m.EducationModule)
- 每个NgModule仅声明自身目录下的组件,不要跨目录导入其他子模块的私有组件,避免模块依赖混乱
- 仅当前子板块使用的服务、接口类型、静态资源,直接存放在对应子板块的目录下即可,不要全部堆到
shared目录造成冗余 - 组件名称和所属目录名保持完全一致,减少后续维护时的查找成本
内容的提问来源于stack exchange,提问作者Sharu
相关产品推荐
相关产品推荐

