Next.js 13?
순서
NextJs가 뭐지?
React 프레임워크
그럼 프레임워크 VS 라이브러리 뭐가 다르지..?
라이브러리를 쓸 떄 사용자는 앱의 흐름을 직접 제어함
프레임워크는 제어의 흐름이 일부 포함되어 개발자의 신경을 덜 쓰게
NextJs가 뭐지?
프레임워크이고 빠른 웹 앱을 만들 수 있게 함.
그리고 빠르게 웹 앱을 만들기 위해 이런이런 것들을 지원함!
NextJs가 뭐지?
NextJs와 리액트
그럼 리액트대신 NextJs를 써야 하는 이유들
앞서 말했던 것들이 장점이 될 수 있음
서버 컴포넌트에 대해
컴포넌트가 랜더링 되는 곳이 서버냐 클라이언트의 차이
서버 컴포넌트..
사용자 -> 해당 페이지에 접속 -> 서버에 요청을 날리면
서버가 컴포넌트 트리를 직렬화된 JSON 형태로 구성하기 시작
이 과정은 서버 컴포넌트가 아니라 클라이언트일떄 건너뜀
(서버 컴포넌트에서만 저 과정이 실행됨)
-> 클라이언트 컴포넌트 일떄에는 “아 이곳은 클라이언트 컴포넌트가 랜더링될거임” 이라는 표시를 배치함
결국 최종적으로 클라이언트에는 다음의 결과물이 반환.!
CSR vs SSG,SSR
CSR :
아 서버에서 모든 정보를 받아와서 화면을 그리면 너무 늦잖아–🤬🤬🤬
서버에서 틀이 되는 파일 하나만 내려줘! 나머지는 자바스크립트로 화면을 그릴게
-> 빈 HTML만 내려받고, Client단에서 자바스크립트로 DOM을 랜더링해!
-> 모든 로직은 Client에서 처리할게(라우팅, 데이터 가져오기 등)
그럼 SSR?
서버에서 HTML,,CSS, 최소한의 자바스크립트를 처리하고 서버에서 미리 페이지를 만들어서
(pre-rendering) 내려줄게
-> 그 후 페이지가 랜더링되면 자바스크립트 코드와 연결이 이루어짐
-> hydration이라고 불림니다.
Next js Pre-rendering
Pre-rendering과 SSG/SSR
이 Pre-rendering을 언제하냐에 따라 SSG,SSR로 구분됩니다.
Next js CSR?
아님니다.!
Next js Link태그 (Prefetch를 곁들인..)
다른 페이지로 가는 링크를 쓸때 Next가 제공하는 Link컴포넌트를 쓸 수 있음.
일반적인 a태그와는 약간 다름!
Next는 Link컴포넌트가 현재 뷰포트에 존재한다면, 해당링크의 페이지를
“미리 가져옴”!
따라서 더 빠른 페이지 전환이 가능함
NextJs의 App Dir
이 폴더는 URL Path와 매핑이 되어짐니다. 페이지를 위한 파일은 Page.tsx
Next js App Dir
서버 컴포넌트는 서버부분에서 랜더링되는 컴포넌트
대부분의 컴포넌트가 서버에서 랜더링되고 작은 UI요소들만 클라이언트에서 랜더링
-> 이 작은 UI요소들을 클라이언트 컴포넌트 -> 리액트의 컴포넌트와 성격이 비슷!
- 클라이언트 컴포넌트에서만 useState,useEffect같은 훅을 사용할 수 있음
- 상단에 ‘use client’지시어를 붙여줘야 함