요즘 웹어플리케이션들은 보통 SPA(Single Page Application)로 만든다.
NextJS는 SPA 뿐만 아니라 일반 웹어플리케이션 개발을 좀 더 간략화시키면서도 커스터마이징이 가능하고, 어플리케이션을 더 빠르게 하기위해 사용한다.
먼저 JS 와 React와 함께 사용하며 페이지 로딩을 빠르게 하고 좋은 SEO 퍼포먼스를 보여주는 SSR(Server-Side Rendering)을 기본으로 한다.
(참조: https://medium.com/walmartlabs/the-benefits-of-server-side-rendering-over-client-side-rendering-5d07ff2cefe8)
그외 간략하게 살펴 보면,
- Server-rendered by default
(서버 사이드 렌더링) - Automatic code splitting for faster page loads
(각 페이지를 번들링해서 페이지를 화면에 띄움. 그래서 속도가 빠름) Simple client-side routing (page based)
(간단한 클라이언트 사이드 라우팅)
(client-side routing에 관해 궁금하다면
http://krasimirtsonev.com/blog/article/deep-dive-into-client-side-routing-navigo-pushstate-hash
를 참조하세요)- Webpack-based dev environment which supports Hot Module Replacement(HMR)
(HMR을 지원하는 웹팩기반 개발 환경 ) - Able to implement with Express or any other Node.js HTTP server
(기본 routing을 NextJS는 express 혹은 다른 nodejs 의 http 를 상속받아서 사용 가능. import Link from 'next/link' 로 Link 사용)
// pages/index.js import Link from 'next/link' export default () => ( <div> Click{' '} <Link href="/about"> <a>here</a> </Link>{' '} to read more </div> )
페이지 들은 pages 폴더 안에 꼭 있어야 라우팅 가능.
- Customizable with your own Babel and Webpack configurations
(바벨이나 웹팩 환경설정을 커스터마이징 가능.)
등등이 있지만 공식 Docs 에 나와 있는 건 이정도 이다
( 참조: https://nextjs.org/learn/ )
결론은, 어렵고 복잡한 것들은 덜 신경쓰고 더 빠르고 더 쉽게 웹 어플리케이션을 만들기 위해서는 NextJS를 사용하자....?
고로 NextJS + NodeJS + ReactJS (+ KeystoneJS) 를 하면 생산성 하나는 최고인듯
(ReactJS + NodeJS 를 이용한 SSR 퍼포먼스를 다른 템플릿들과 비교 해보고 싶다면,
https://malloc.fi/performance-cost-of-server-side-rendered-react-node-js
에 여러 템플릿들과 직접 비교한 데이터 및 설명들이 나와 있다.)