이제 리액트도 겨우 할 줄 아는데
다들 Next.js!!! 얘기를 하더라거여,,?
배워도 배워도 배워도 끝이 옶는...
이건 모냐....해서 공부하려고 글을 써봅니다.
일단 위키백과씨가 알려준 바에 의하면
Next.js는 서버 사이트 렌더링, 정적 웹 페이지 생성 등 리액트 기반 웹 애플리케이션 기능들을 가능케 하는 Node.js 위에서 빌드된 오픈 소스 웹 개발 프레임워크이다.
여기서 다시 한 번 짚고 넘어갑시다.
나는 아는데욥? 하시면 바로 넘어가시묜 됩미다! (사실 제가 헷갈려서 정리하는 겁니다.)
어떤 어플리케이션을 개발하기 위해 필요한 기본적인 클래스와 라이브러리등이 모두 포함되어있는 환경을 의미합니다.
잘 이해가 안되시죠..?
이 두 가지를 비교해보면 더 이해가 쉬울 것 입니다.
프레임워크
예시)
라이브러리
소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임. 즉, 특정 기능을 모아둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미합니다.
예시)
가장 중요한 차이점
"제어흐름"의 권한이 어디있느냐 입니다.
라이브러리 사용시 사용자가 애플리케이션 코드의 흐름을 직접 제어 합니다.
프레임워크는 애플리케이션의 코드가 프레임워크에 의해 사용됩니다.
애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하므로 제어의 흐름은 프레임워크가 가지게 되고 사용자가 그 안에 필요한 코드를 작성하게 됩니다.
그래서 다시한번 짚어보자면
리액트 기반의 프레임워크, 리액트 개발자에게 생산성과 편의성을 증대시켜 주며 이는 곧 React의 단점(SPA의 단점)을 커버해 준다는 것을 의미합니다.
장점이자 단점이 발생하게 됩니다.
1. 모든 JS 코드를 불러와야 하기 때문에 처음 페이지를 불러올 때 시간이 오래 걸립니다.
2. 검색 엔진 최적화(SEO)에 좋지 않습니다.
- 검색 엔진 봇이 사이트에 방문하였을 때 콘텐츠를 제공하지 못하여 사이트를 파악하는데 어려움이 있습니다.
이러한 문제점들을 서버사이드렌더링(SSR)을 사용함으로써 해결할 수 있습니다.
서버에서 사용자에게 보여줄 페이지를 모두 미리 구성한 뒤 페이지를 렌더링 하는 방식
CSR 동작과정과 비교하면 쉽습니다.
: 서버에서 전체 페이지(빈 페이지)를 최조 렌더링하고 사용자가 요청 할 때마다 클라이언트 내(브라우저)에서 렌더링 하는 것을 의미합니다.
그림으로 쉽게 보세요
Next.js의 등장
Next.js는 SPA와 SSR의 단점을 해결하기 위해서 리액트에 서버사이드렌더링 기능을 더하여 SPA와 SSR의 장점을 가질 수 있게 됩니다.
리액트에 SSR 기능을 추가하려면 웹 서버를 만들어 주고, 웹팩 설정, 데이터 로딩, 코드 스플리팅 등 복잡한 과정을 필요로 합니다.
Next.js를 통해 이러한 것들을 설정하지 않고 바로 사용할 수 있습니다!!
다시 정리해서 사진으로 간단하게 봐봅시다.
- 초기 페이지를 서버에서 자바스크립트를 로딩합니다. (SSR)
- SEO 문제를 해결합니다.
- 직관적인 페이지 기반 라우팅 시스템 (Auto Routing)
프로젝트의 가장 바깥 폴더인 pages/ 폴더에서 컴포넌트를 export 하면 폴더명이 페이지 route가 됩니다.
react-router
라는 라이브러리를 사용하지 않아도 됩니다.
- SPA의 장점을 유지합니다.
- Code splitting (코드 분할) 지원
코드 스플리팅 이란?
내가 원하는 페이지에서 원하는 자바스크립트와 라이브러리를 렌더링 하는 것 입니다. 모든 번들이 하나로 묶이지 않고, 각각 나뉘어 좀 더 효율적으로 자바스크립트 로딩 시간을 개선할 수 있습니다.
- Typescript 내장
따로 타입스크립트 설정 없이 사용할 수 있습니다.
.
.
.
.
.
.
https://velog.io/@carrot/Next.js-%EC%86%8C%EA%B0%9C-%EB%B0%8F-%ED%8A%B9%EC%A7%95
https://adjh54.tistory.com/52