https://programmers.co.kr/skill_check_assignments/199
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
평소 리액트로만 주고 코딩을 했고 자바스크립트 구현에 익숙하지 않아 공부하기 위해 바닐라 자바스크립트 구현 과제테스트를 풀어보았다. 바닐라 자바스크립트로 SPA를 구현할때 가장 중요한 페이지 라우팅을 구현할 때 필요한 history api를 정리해 보았습니다.
1. History api
History api란 history 글로벌 객체를 이용해 브라우저의 세션 히스토리에 대한 접근과 조작 기능을 제공하는 것으로
즉 현재 페이지를 불러온 탭 또는 프레임의 방문기록을 조작 할 수 있는 방법을 제공한다.
history.length - 세션 히스토리에 들어있는 요소들의 개수 확인
history.back() - 뒤로가기
history.forward() - 앞으로가기
history.go(숫자) - 숫자만큼 이동
✨history.pushState(state, unused, url) - 브라우저의 세션 기록 스택에 항목을 추가해준다.
첫번째 인자는 바뀐 주소와 함께 저장할 데이터 객체이고, 두번째 인자는 역사적인 이유로 존재해서 생략할 수 없고 빈 문자열을 전달하는것이 안전하고, 세번째 인자는 바뀔 주소입니다.
세번째 url로 바뀔 주소를 전달해주면 주소창은 바뀌지만 실제 페이지 이동은 안되기때문에 따로 렌더링을 처리를 해줘야한다.
✨history.replaceState(state, unused, url) - 브라우저의 세션 기록 스택에 항목을 갈아끼워버린다.
replace란 말처럼 뒤로가기로 원래 url로 갈 수 없다.
pushState나 replaceState를 호출만하면 이벤트가 트리거되지 않는데, 뒤로가기나 앞으로가기 할때 popstate 이벤트가 발생됩니다. popstate 이벤트 발생 후 history.state 에 접근하면 이전 state를 가져올 수 있습니다.
그 정보들을 이용해 다시 렌더링 할 수 있습니다.
'javascript' 카테고리의 다른 글
함수형 프로그래밍과 자바스크립트 그리고 이터러블/이터레이터 프로토콜 (3) | 2025.04.30 |
---|---|
forEach , map 알아보기 (0) | 2022.04.18 |
textContent , innerText 차이 (0) | 2022.04.09 |
i++와 i+=1의 차이점? (0) | 2022.04.05 |
HTMLCollection vs NodeList (0) | 2022.04.01 |