폴더 구조 설계 - ChoDragon9/posts GitHub Wiki

├─ src
│  └─ app
│     ├─ app.module.ts
│     ├─ constants
│     ├─ modules
│     │  └─ feature
│     │     ├─ feature.module.ts
│     │     ├─ feature.page.ts
│     │     ├─ feature.page.html
│     │     ├─ pipes
│     │     ├─ directives
│     │     ├─ shared
│     │     │  ├─ feature.helper.ts
│     │     │  ├─ feature.state.ts
│     │     │  └─ child.state.ts
│     │     └─ components
│     │        ├─ child.ts
│     │        ├─ child.html
│     │        ├─ child2
│     │        ├─ child2.ts
│     │        └─ child2.html
│     ├─ core
│     │  ├─ core.module.ts
│     │  ├─ apis
│     │  ├─ guards
│     │  ├─ helpers
│     │  └─ states
│     └─ shared
│        ├─ shared.module.ts
│        ├─ components
│        ├─ directives
│        └─ pipes

app.module.ts

루프 모듈을 정의하는 파일이다.

constants

상수를 포함하는 디렉토리이다.

modules

FeatureModule을 포함하는 디렉토리이다. FeatureModule은 기능단위의 모듈을 정의하며, 기능은 페이지 단위, 독립적으로 동작하는 팝업 단위가 될 수 있다.

modules/feature/shared

FeatureModule 내에서 두개 이상의 컴포넌트에서 사용할 서비스 파일을 포함한다.

core

CoreModule을 포함하는 디렉토리이다. 싱글턴 객체를 정의하는 파일로 역할에 맞게 각 폴더에 정의해서 사용한다.

shared

SharedModule을 포함하는 디렉토리이다. 재사용할 컴포넌트, 디렉티브, 파이프를 정의한다.

서비스 역할 분리

  • filename.api.ts: 백엔드 API의 엔드포인트를 정의하는 파일이다.
  • filename.helper.ts: 독립적으로 동작하는 헬퍼를 정의하는 파일이다.
  • filename.state.ts: 상태관리를 정의하는 파일이다.
  • filename.guard.ts: 가드를 정의하는 파일이다.