React의 SSR(Server Side Rendering)을 쉽게 구현할 수 있도록 도와주는 간단한 프레임워크
리액트로 개발할 때 SPA와 CSR(Client Side Rendering)을 하기 때문에 좋은 점도 있지만 단점도 있음. 그것이 바로 검색엔진 최적화(SEO) 부분
Client Side Rendering을 하면 첫페이지에서 빈 html을 가져와서 JS파일을 해석하여 화면을 구성하기 때문에 포털 검색에 거의 노출되지 않음
하지만 Next.js에서는 Pre-Rendering을 통해 페이지를 미리 렌더링하여 완성된 html을 가져오기 때문에 사용자와 검색 엔진 크롤러에게 바로 렌더링 된 페이지를 전달할 수 있게됨
리액트에서도 SSR을 지원하지만 구현하기에 굉장히 복잡하기 때문에 Next.js를 통해서 이 문제를 해결
보통 리액트에서는 useEffect로 데이터를 가져옴. 하지만 next.js에서는 여러가지 방법이 있으며 사용 용도에 따라 사용하면 됨
getStaticProps 함수를 async로 export하면 getStaticProps에서 리턴되는 props를 가지고 빌드 타임에 페이지를 pre-render함
동적 라우팅이 필요할 때 getStaticPaths로 경로 리스트를 정의하고, 빌드 시간에 HTML에 렌더링 됨
Next.js는 pre-render에서 정적으로 getStaticPaths에서 호출하는 경로들을 가져옴
return {
paths: [
{ params: { id: '1' } },
{ params: { id: '2' } }
],
fallback: ...
}
빌드하는 동안 /posts/1과 /posts/2를 생성하게 됨fallback
- false인 경우: getStaticPaths로 리턴되지 않는 것은 모두 404 페이지가 뜸
- true인 경우: getStaticPaths로 리턴되지 않는 것은 404로 뜨지 않고, fallback 페이지가 뜨게 됨
getServerSideProps 함수를 async로 export하면, Next.js는 각 요청마다 리턴되는 데이터를 getServerSideProps로 pre-render함
build 타임에 한번에 가져오는게 아니라 요청할 때 마다 가져옴
JavaScript의 코드가 커질수록 소스 코드가 복잡해져서 코드를 유지 관리하고 재사용하기가 어려워짐. 더욱이 Type 검사 및 컴파일 시 오류 검사의 기능을 수용하지 못하기 때문에 이것을 해결하기 위해 TypeScript가 제시됨.
타입스크립트는 자바스크립에 타입을 부여한 언어. 타입스크립트는 자바스크립트를 타입 시스템으로 감싼 자바스크립트의 확장된 언어라고 할 수 있음.
타입스크립트는 자바스크립트와 달리 브라우저에서 실행하려면 파일을 한번 변환해주어야 함. 이 변환 과정을 컴파일이라고 부름