You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 整洁项目文件夹架构配置规范咨询

Angular 项目文件夹架构规范参考

1. 仅负责API通信的service存放规则

  • 跨多个业务模块调用、无特定模块归属的纯API通信服务,统一放在src/app/core/http/目录下,目录直接命名为http即可,文件按对接的业务域命名,比如对接用户相关接口的文件叫user.http.ts,对应服务类命名为UserHttpService;如果项目里没有单独拆分纯HTTP服务的习惯,也可以直接放在src/app/core/services/目录下。
  • 只给单个业务模块调用的API通信服务,不需要提升到全局core目录,直接放在对应业务模块自己的services/子目录下即可,避免全局服务冗余。

2. 公共通用共享Component存放规则

所有不绑定特定业务逻辑、可在全项目任意模块复用的通用组件(比如通用分页器、通用上传组件、全局通用按钮组件等),统一放在src/app/shared/components/目录下,共享内容的根目录固定命名为shared即可。
所有存放在这个目录下的公共组件,需要在SharedModule中统一声明、导出,其他业务模块需要使用时,直接导入SharedModule即可,不要重复声明同一个公共组件。
注意:带明确业务属性的复用组件(比如仅订单模块使用的订单状态标签)不要放到全局shared目录,放在对应业务模块的私有组件目录即可。

3. app根目录与feature业务目录的子文件夹配置

app根目录(src/app/)标准子目录

  • core/:存放全局单例资源,包括全局HTTP拦截器、路由守卫、全局注册的服务、应用级常量配置、全局工具函数,该目录下的资源在应用全生命周期只初始化一次,不要放可复用的组件、指令这类需要在多模块声明导出的内容。
  • shared/:存放全局无业务耦合的可复用资源,包括前面提到的公共组件、通用指令、通用管道、公共类型定义、第三方依赖模块的二次封装导出,该目录下的内容不能绑定特定业务逻辑,要做到导入到任意模块都能正常运行。
  • features/:所有业务功能模块的根目录,每个独立业务域对应一个单独的子文件夹,比如用户中心对应user/、订单模块对应order/、内容管理模块对应cms/。
  • layout/:存放全局布局类组件,比如顶部导航、侧边菜单栏、全局页脚、应用主布局框架组件。
  • 根目录直接放置app.module.ts、app-routing.module.ts、app.component.*这几个应用启动核心文件即可,不要零散放业务文件。

单个feature业务目录(src/app/features/[业务模块名]/)标准子目录

  • components/:存放当前模块内部复用、不会对外暴露给其他模块使用的私有组件,比如订单模块内部用的订单筛选表单、订单状态徽标。
  • pages/(也可根据团队习惯命名为routes/containers):存放当前模块下和路由直接绑定的页面级组件,也就是路由跳转时直接渲染的入口组件,比如订单列表页、订单详情页、订单编辑页。
  • services/:存放仅当前模块使用的服务,包括模块专属API通信服务、模块内部业务逻辑处理服务、模块级状态服务。
  • models/:存放当前模块专属的TypeScript类型定义、接口、枚举。
  • store/(仅使用NgRx等状态管理方案的项目需要配置):存放当前模块的状态管理相关文件,包括action、reducer、effect、selector。
  • 模块根目录直接放置当前模块的[模块名].module.ts、[模块名]-routing.module.ts配置文件即可。

内容的提问来源于stack exchange,提问作者PositiveM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:57:13