피드로 돌아가기
Claprec: Frontend - Angular, NgRx, and OpenAPI (3/6)
Dev.toDev.to
Frontend

Angular의 강한 제약 조건을 활용한 엔터프라이즈급 SPA 구조 설계

Claprec: Frontend - Angular, NgRx, and OpenAPI (3/6)

Kenan Sejmenović2026년 5월 15일22intermediate

Context

Next.js와 Vue의 유연한 구조 대비 아키텍처 산재(Architectural Sprawl) 가능성을 억제하기 위해 Angular의 Opinionated Structure 채택. 실시간 채팅 인터페이스의 DOM 업데이트 시 발생하는 스크롤 위치 손실 및 모바일 뷰포트 계산 오류 해결 필요.

Technical Solution

  • ngAfterViewInit 훅을 통한 헤더 및 푸터 높이의 Store 동기화로 정확한 채팅 컨테이너 높이 산출
  • RxJS 스트림과 스크롤 오프셋 계산 로직을 통한 채팅 히스토리 로드 시 위치 보존 및 신규 메시지 수신 시 조건부 Bottom Snapping 구현
  • window.innerHeight의 한계를 극복하기 위해 window.visualViewport를 활용한 모바일 브라우저 툴바 대응 정밀 높이 계산
  • PaginationHelper 클래스 설계를 통한 URL Query Parameter와 페이지네이션 상태의 동기화 및 상태 충돌 방지
  • SEO 요구사항 부재 및 인프라 복잡도 감소를 위해 SSR 대신 CSR 전략을 선택하여 개발 속도 및 서버 자원 최적화

- 실시간 채팅 UI 구현 시 DOM 변경 전후의 scrollHeight 차이를 계산하여 사용자 스크롤 위치를 보존하는 로직 검토 - 모바일 브라우저의 가변 뷰포트 대응을 위해 window.innerHeight 대신 window.visualViewport API 사용 고려 - 반복되는 페이지네이션 로직을 generic helper 클래스로 추상화하여 상태 관리 일관성 확보

원문 읽기