URL 변경과 화면 렌더링은 따로 연결합니다

pushState는 주소를 바꾸지만 popstate를 발생시키지 않으므로, 라우터가 렌더링을 직접 호출해야 합니다.

링크 클릭 경로
click 방지 → pushState → renderRoute 직접 호출
사용자는 새 페이지처럼 느끼지만 문서는 그대로 유지됩니다.
뒤로가기 경로
브라우저 이동 → popstate 발생 → renderRoute 호출
event.state와 location.pathname을 함께 읽어 상태를 복원합니다.
핵심 규칙 초기 로드, 링크 클릭, popstate 세 지점에서 같은 라우팅 함수를 재사용하면 흐름이 단순해집니다.