리액트를 공부중인 리린이가 정리해본 React Router, 특히 BrowserRouter 와 HashRouter의 차이점에 대해서 정리한 글입니다.
React Router
React SPA(Single Page Application) 구현에 가장 많이 사용 되는 'react-router-dom'
기존 방식의 <a href=""></a>를 사용해서 url 변경 시 새로고침 되며 모든 페이지를 reload 하여 로드 시간이 걸리게 됩니다.
React는 SPA 체제로 새로고침 대신 Router를 사용하여 변경된 소스만 바뀌도록 해주기 때문에 속도가 빠릅니다.
react-router, react-router-dom, react-router-native의 차이
- react-router-dom : web에서 사용
- react-router-native : app에서 사용
- react-router : web과 app 둘 다 사용
BrowserRouter 와 HashRouter 의 차이점
### BrowserRouter
* HTML5의 history API를 활용해서 UI를 업데이트 한다.
* 동적인 페이지에 적합하다. (서버에 있는 데이터들을 스크립트에 의해 가공 처리 한 후 생성되어 전달되는 웹페이지)
* 새로 고침 하면 경로를 찾지 못해서 에러가 난다. (주소를 사용하여 페이지를 찾아갈 때에도 에러 발생)
* 이를 해결하기 위해서는 서버에 추가적인 세팅이 필요하다. 페이지의 유무를 서버에 알려줘야 하며 서버 세팅시 검색엔진에 신경써야한다.
* github pages에서 설정하기 복잡하다. (배포가 복잡)
### HashRouter
* URL의 hash를 활용한 라우터이다.
* 주소에 #가 붙는다.
* 정적인 페이지에 적합하다. (미리 저장된 페이지가 그대로 보여지는 웹페이지)
* 검색 엔진으로 읽지 못한다. #값 때문에 서버가 읽지 못하고 서버가 페이지의 유무를 알지 못하기 때문. (그 이유 때문에 거의 사용하지 않는다.)
* 새로고침 해도 에러가 나지 않는다.
* github pages에서 설정하기 간편하다. (배포가 간편)
마치며
일반 프로젝트 작업을 할 때에는 BrowserRouter를 사용하는 편이 좋으며 (동적 페이지에 적합, 검색 엔진이 읽을 수 있음) 개인 포트폴리오를 git page에 배포해서 보여줄 때에는 hashRouter가 간편할 수 있습니다.
'업무이야기' 카테고리의 다른 글
반응형 홈페이지 만들 때 고민해 보았던 것들 (0) | 2020.11.18 |
---|---|
이메일 코딩하고 테스트 하기 (2) | 2020.11.05 |
intelliJ(webstrom, phpstrom) 에서 sass scss 사용하기 (0) | 2020.09.22 |
React 시작 전 설치해야할 목록 (Mac OS) (0) | 2020.09.09 |
Mac MAMP 설치하고 phpStorm에서 브라우저 띄우기 (0) | 2020.09.06 |