CSR(Client-side rendering) 방식으로도 충분히 훌륭한 SPA 웹 애플리케이션을 만들 수 있다. 그럼에도 불구하고 SSR(Server-side rendering)과 SSG(Static-site generation)을 채택하여 프로젝트를 진행하는 경우가 있다. CSR과 SSR, SSG에는 각각의 장단점이 있다.
CSR의 경우 처음으로 브라우저에 보내지는 HTML 파일에 아무런 컴포넌트도 담겨져있지 않다. 이후 보내질 JSX 파일이 렌더링할 컴포넌트들을 감쌀 div
태그만이 body
태그 내에 존재하고 있다. 그렇기 때문에 유저가 화면을 보기 위해서는 [1. view를 이루는 컴포넌트], [2. 비즈니스 로직을 담고있는 코드]와 [3. 어플리케이션을 구동하는 라이브러리와 프레임워크의 소스코드]를 모두 담고 있는 자바스크립트 파일이 다운로드되길 기다려야 한다. 추가로 필요한 데이터가 있다면 서버에 요청을 보내 또 기다려야 하며, 이런 데이터들을 기반으로 HTML 파일을 생성하여 유저에게 웹페이지를 보여주게 된다.
이에 따른 CSR의 단점과 장점은 아래와 같다.
단점
장점
SSR와 SSG의 경우 서버가 자바스크립트 파일을 기반으로 HTML 파일을 생성해 놓는다. 클라이언트에서 특정 웹페이지에 대한 요청을 보낼 경우 이 HTML 파일을 우선 응답으로 보내고, 이후 비즈니스 로직 등을 담고 있는 자바스크립트 파일을 보낸다.
이에 따른 SSR과 SSG의 단점과 장점은 아래와 같다.
단점
장점
Next.js는 React 라이브러리를 사용한 프로젝트에서 SSR과 SSG 구축을 비교적 쉽게 가능하게 해주는 프레임워크이다. Next.js가 제공해주는 기능은 정말 많지만, 개인적으로 느끼기에 중요한 기능은 아래와 같다.
http://localhost:3000/next
url에서 렌더링됨)Link
태그를 통한 빠른 페이지 전환a
태그가 아닌 Link
태그 (import Link from 'next/link'
)를 사용하여 페이지를 빠르게 이동할 수 있도록 도와준다. 관련 페이지를 백그라운드에 미리 가져다놓기 때문에 가능한 기능이다.getServerSideProps
, getStaticProps
함수Next.js Documentation
[Next.js] 기본 개념 : Next.js 란? Next.js를 왜 사용할까? Next.js의 장점은?