제품 화면을 route 단위로 나누고 사용자가 길을 잃지 않는 탐색 구조를 설계합니다.
화면을 추가하기 전에 사용자가 어떤 URL을 직접 열 수 있어야 하는지 먼저 정합니다. URL은 메뉴 구조의 부산물이 아니라 공유, 새로고침, 권한 판단에 쓰이는 제품 계약이므로 초기에 이름을 안정적으로 잡는 편이 좋습니다.
- 정적 route와 상세 route를 구분합니다.
- 메뉴 label과 URL 이름을 최대한 가깝게 둡니다.
- 삭제 예정 route는 redirect 계획을 함께 둡니다.
상단 navigation, 좌측 메뉴, 본문, 보조 패널은 각자 스크롤 책임이 다릅니다. 제품형 화면에서는 shell을 고정하고 내용만 바뀌게 설계하면 페이지 이동 중 시각적 흔들림이 줄어듭니다.
- 공통 shell은 shared builder로 둡니다.
- 페이지별 sidebar는 데이터로 구성합니다.
- 긴 본문은 sticky 보조 탐색을 붙입니다.
필터, 탭, 검색어처럼 사용자가 복원하고 싶은 상태는 query parameter 후보입니다. 반대로 임시 hover, modal 내부 입력 중간값, 드롭다운 열림 상태는 URL에 넣지 않는 편이 더 자연스럽습니다.
- 공유 가능한 상태만 query로 올립니다.
- 기본값은 URL을 짧게 유지합니다.
- 뒤로 가기 동작을 실제로 확인합니다.
좋은 내비게이션은 링크가 많은 것이 아니라 현재 위치와 다음 행동을 동시에 보여줍니다. 좌측 메뉴는 문서 집합 안의 위치를, 우측 목차는 현재 글 안의 위치를 보여주도록 역할을 분리합니다.
- 현재 route는 aria-current로 표시합니다.
- 긴 페이지는 scroll-margin을 지정합니다.
- 모바일에서는 보조 목차를 숨겨 본문을 우선합니다.
Java 중심 UI 시스템으로 제품 수준의 웹 앱을 더 빠르게 구축합니다. 공통 컴포넌트와 레이아웃을 기반으로 사이트를 일관되게 확장할 수 있습니다.