
📍 <SSR - 서버 사이드 렌더링>
서버 측에서 렌더링하여, 클라이언트 쪽으로 보내주는 것 요청이 올 때마다 해당하는 html 문서를 그때 그때 생성하여 반환
ex) next.js
📍 <CSR - 클라이언트 사이드 렌더링>
서버에서 데이터를 받아와, 클라이언트 환경에서 렌더링하여 브라우저 화면에 표시하는 것
ex) react
Next.js의 장점
Next.js의 단점
기존의 리액트는 html구성이 안되어있는 상태이기 때문에 검색엔진이 쉽게 찾을 수 없다.
반면 넥스트는 서버에서 이미 html을 구성하였기 때문에 SEO가 좋다.
구글의 크롤러 봇은 자바스크립트를 실행할 수 있어 CSR의 크롤링도 가능하다.
하지만 아직 완벽한 상태는 아니며, 구글 측에서도 자바스크립트를 실행 전 더욱 빠른 크롤링과 다른 크롤러 봇들을 위해 SSR을 고려해보라는 말을 한다.
SEO가 좋으면 사용자가 검색했을 때 제작한 페이지가 상단에 노출되어야 유입이 증가한다.
Next.js는 모든 페이지를 사전 렌더링한다.
정적 생성의 경우 프로젝트가 빌드되는 시점에서 html 파일이 생성됩니다.
SSR은 매 요청마다 html 파일이 생성됩니다.
이 부분에 대해서는 다음 글에 자세히 적어볼 생각이다.
리액트와 다르게 별도의 세팅 없이 폴더 및 파일 기반으로 라우팅을 지원한다.
📍 미리 정의된 URL 주소로만 라우팅하는 것이 아니라 사용자가 접근한 경로 혹은 상황에 따라 동적인 라우팅을 제공하고 싶을 때 사용할 수 있는 방식이다.
📍 이를테면, /my-profile/ 뒤에 이름을 주어서 회원들의 프로필을 표현하고 싶다면? /my-profile/apple 페이지에서는 apple 의 프로필을 제공하고, /my-profile/orange 페이지에서는 orange 의 프로필을 제공하고 싶을 때 사용할 수 있다.
📍 Next.js 에서는 [param] 과 같이 페이지에 존재하는 컴포넌트 파일명에 괄호를 씌우는 것으로 가능하다. 이를테면 pages/my-profile/[name].js 와 같이 경로를 구성하면 위에서 예로 들었던 /my-profile/jake-seo 와 같은 URL이 잘 매칭되어 라우팅된다.
hot reloading이라고하며 개발 중 저장되는 코드는 자동으로 새로고침된다.
넥스트는 "< Link />" 로 페이지간 이동이 빠르고 매끄럽습니다.
a태그와 다르게 페이지가 리로딩되지 않으며 가 뷰포트에 보이면 해당 페이지를 백그라운드에서 미리 가져온다.
첫 페이지가 로드될 때 모든 코드를 호출하는 것이 아닌, 번들을 여러 조각내어 처음에 필요한 부분만 전송해 주는 방식으로 로드 시간을 단축시킨다.
코드 분할은 webpack, parcel 등 모듈 번들러도 지원하는 기능이지만 넥스트는 별도의 설정 없이 사용 가능하다.
npx creat-next-app
npx create-next-app --typescript