1세대 (정적인 웹사이트)
2세대 (동적인 웹사이트)
- 유저인터렙션이 증가
- JS등장 !! (기능이 가능한 웹페이지)
3세대(SPA방식, 한 페이지 웹)
웹 렌더링!
Create React application 이라고 한다.
아무런 초기 설정 없이 CRA를 통해 React SPA 사이트를 구현할 수 있습니다.
CRA탄생 전엔 웹팩과 바벨로 초기세팅을 진행했다고 합니다.
CSR(클라이언트 사이드 렌더링)
브라우저, 사용자 딴에서 렌더링이 클라이언트 측에서 일어나는 것을 의미합니다.
정리,
서버에서 index.html 파일을 클라이언트에 보내주고
Body 안에 아이디가 루트인 디브 태그를 볼 수 있는데
처음에 접속하면 빈 화면만 보이고 어플리케이션에서 필요한 로직들 뿐만 아니라
어플리케이션을 구동하는 프레임워크와 라이브러리도 가능 합니다.
SEO란? 검색엔진을 뜻함.
서버에 등록된 웹사이트를 검색하는 엔진이고,검색엔진들이 판단해서 등록합니다.
이에 대한 단점으로는 CSR은 body 태그 안에 비어져 있기에 검색엔진들이 웹페이지를 분석하지못합니다. 그러기에 검색엔진이 좋지 않습니다!
그래서 SSR이 도입!!
SSR
서버 사이드렌더링
한줄 정리,
서버 사이드 렌더링이 도입되면서 웹사이트에 접속하면,
서버에서 필요한 데이터를 가져와서 HTML을 만들고
동적으로 만든 소스코드를 클라이언트에게 보냅니다.
클라이언트 문서를 받아 와서 사용자에게 보여줄 수 있게 됩니다.
장점으로는,
페이지 로딩이 빨라지고, 모든 컨텐츠가 HTML에 담겨져 있기 때문에
조금 더 효율적인 SEO(검색엔진)을 할 수 있습니다.
하지만, 모든 솔루션이 될 수는 없습니다.
그래서 두가지 측면이 필요해서 나온 Next.js
next.js
CSR & SSR 두가지 측면이 필요해서 나온것
1️⃣ 브라우저가 FE Server에게 Requset를 요청
2️⃣ 렌더링을 함
3️⃣ 렌더된 상태의 파일이 브라우저로 되돌아감
4️⃣ HTML파일만 오기에 일단 기능이 없다.
5️⃣ JS 파일이 로드가 된 후 기능이 작동 가능함.
React 공식문서에 API
문서내용을 보면,
"이미 서버 렌더링 된 마크업이 있는 노드에서
ReactDOM.hydrat()
를 호출할 경우 React는 이를 보존하고
이벤트 핸들러만 연결함으로써 매우 뛰어난 첫로드 성능을 뜁니다" 라고 명시 되었습니다.
이미 서버 렌더링이 된 마크업에서는 기능 작동이 되지 않음.
즉, HTML로 된 파일은 기능이 없어 JS파일이 로드가 된 후에 기능 작동합니다.
이를 연결고리 해주는 역할을 ReactDOM.hydrate()
라고 한다고 합니다.
이 과정이 끝나면 CSR로 돌아옵니다.