FSD

프론트엔드 애플리케이션의 구조를 잡는 아키텍처 방법론

개념

레이어, 슬라이스, 세그먼트 순서로 계층 구조로 이루어짐

레이어

  1. App: 앱을 실행하는 모든 것 - 라우팅, 진입점, 전역 스타일, 프로바이더
  2. Processes: 더 이상 사용되지 않음
  3. Pages: 전체 페이지 또는 중첩 라우팅에서 페이지의 주요 부분
  4. Widgets: 독립적으로 작동하는 대규모 기능 또는 UI 컴포넌트, 보통 하나의 완전한 기능
  5. Features: 제품 전반에 걸쳐 재사용되는 기능 구현체로, 사용자에게 실질적인 비즈니스 가치를 제공하는 동작
  6. Entities: 프로젝트가 다루는 비즈니스 엔티티
  7. Shared: 재사용 가능한 기능, 특히 프로젝트/비느지스의 특성과 분리되어 있을 때 (반드시 그럴 필요는 없음)
  • App과 Shared는 다른 레이어들과 달리 슬라이스를 가지지 않으며, 직접 세그먼트로 구성됨
  • 한 레이어의 구성 요소는 반드시 아래에 있는 레이어의 구성 요소만 알 수 있고 임포트 할 수 있음

슬라이스

  • 비즈니스 도메인별로 코드를 분할

세그먼트

  • 목적에 따라 코드를 그룹화
  • 표준화되지 않았지만 일반적인 이름들
    • ui: UI와 관련된 모든 것
    • api: 백엔드 상호작용
    • model: 데이터 모델
    • lib: 슬라이스 안에 있는 다른 모듈이 필요로 하는 라이브러리 코드
    • config: 설정 파일과 기능 플래그

장점

  • 균일성
  • 변경과 리팩토링에 대한 안정성
  • 로직 재사용을 통제
  • 비즈니스와 사용자 요구에 대한 지향성

use-funnel

@use-funnel

개념

  • step: 각 화면
  • context: 각 step에서 입력한 값을 저장한 상태
  • history: 전체 step의 이동과 context의 변경 기록