Next.js 제대로 알고 쓰자

문성진

Next.js?

node.js 기반의 React.js 프레임워크 (SSR지원)

2016년 10월 Zeit.co팀에서 출시

SSR(Server Side Rendering)

MPA(Multi Page Applecation)

CSR(Client Side Rendering)

SPA(Sngle Page Applecation)

CSR

SSR

왜 Next.js를?

1. 검색엔진 최적화(SEO)

2. 사용자 입장에서의 빠른 첫 페이지 렌더링

3. 페이지 이동 속도

CSR

SSR

VS

componentDidMount()

render()

 ②

 ①

CSR

getInitialProps()

componentDidMount()

render()

render()

 ①

 ②

 ①

SSR

CSR

 ②

SSR

CSR

초기로딩 속도

초기로딩 속도

page 이동 시 속도

page 이동 시 속도

Next.js 핵심기능

Next.js의 핵심기능

1. ​코드 스플릿팅​(page 모듈화)

4. getInitialProps()

2. page 기반의 간단한 클라이언트 사이드 라우팅을 제공 (Link, Router)

3. Express나 다른 node.js HTTP서버를 구현할 수 있음 (라우트 마스킹-as)

1. 코드 스플릿팅​(page 모듈화)

일반적인 SPA 는 한 page로 결합되어있어서 예를들면 그저 mypage를 보고싶었을 뿐인데도 페이지를 로딩하면서 설정 페이지에 대한 정보도 다운로드하게됩니다. 이 부분을 개선하여, 새 페이지를 불러오지 않으면서 유동적으로 해결해주는것이 바로 코드스플릿팅입니다.

2. page 기반의 간단한 클라이언트 사이드 라우팅을 제공(Link, Router)

href={`/book?id=1`} 

=> as={`/book/1`}

3. 커스텀 서버 API (라우트 마스킹-as)

단지 'as'를 사용하여 경로를 바꾸게 한것이기 때문에, 새로 고침 또는 브라우저에 표시된 경로를 직접 호출 할 경우에는 '404' 에러를 보여 주기 때문에, NEXT JS에 기본으로 설치된 app.js를 커스텀 하여 사용하면 문제는 해결됩니다.

getInitialProps()

componentDidMount()

4. getInitialProps()

 ① 데이터 요청

 ② 저장

렌더링

 

 ② 데이터 요청

③ 저장

④ 렌더링

SSR

DATA

DATA

DATA

DATA

getInitialProps()

render()

첫 Page 로딩 속도

SSR

Page 이동 속도

DATA

DATA

DATA

DATA

getInitialProps()

render()

SSR + CSR

DATA

getInitialProps()

render()

DATA

componentDidMount()

DATA

DATA

render()

SSR + CSR

첫 Page 로딩 속도

Page 이동 속도

DATA

getInitialProps()

render()

DATA

componentDidMount()

DATA

DATA

render()

SSR + CSR

+ Pagenation

첫 Page 로딩 속도

Page 이동 속도

CSR

SSR

Made with Slides.com