회사에서 진행하는 프로젝트에서 REACT.JS가 선택되었다.
NEXT.JS를 통해 FRONTEND 개발을 할 거기 때문에 학습을 해두라고 들었고,
이에 따라 차근차근 학습하기 위해 글을 작성하게 되었다.
참조 https://kyounghwan01.github.io/blog/React/next/basic/#app-tsx
NEXT.JS
특징
NEXT JS는 React로 만드는 서버사이드 렌더링 프레임워크이다.
☞ js는 클라이언트 언어로 알고 있었는데, next js는 서버사이드 프레임워크라고 한다.
서버사이드 렌더링(SSR)을 함으로써 다음과 같은 장점이 발생한다.
1. 서버에서 자바스크립트를 로딩하여 클라이언트 측에서 로딩하는 시간이 줄어든다. 2. 클라이언트사이드 렌더링의 경우 자바스크립트가 로드되지 않은 상태에서 검색엔진에 스캔됨으로서 검색에 아무페이지도 걸리지 않게 되는데 서버에서 자바스크립트를 로딩 후 업로드 됨으로써 검색엔진에 게시글이 걸리게 된다. |
기능
hot reloading
개발 중 저장되는 코드는 자동으로 새로고침된다.
automatic routing
pages 폴더에 있는 파일은 해당 파일 이름으로 라우팅 된다.(pages/page1.tsx -> localhost:3000/page1)
single file components
style jsx를 사용하여 해당 컴포넌트만 스코프로 가지는 css를 만들 수 있다.
server rendering
서버 렌더링을 수행한다.
code splitting
원하는 페이지에서 원하는 자바스크립트와 라이브를 렌더링할 수 있다. 모든 번들을 묶지 않고, 나누어 로딩할 수 있다.
typescript
@types/node, @types/react의 설치만으로 타입스크립트 코딩이 가능하다.(webpack, babel 수정 필요X)
_document.tsx
meta 태그를 정의하거나, 전체 페이지에 관련된 컴포넌트이다.
_app.tsx
최초 실행되는 공통 레이아웃으로, 내부에 컴포넌트를 실행한다.
Component, pageProps를 받는다.
☞ Component는 요청한 페이지로, GET / 요청을 받으면 Component에 /pages/index.js를 props로 받는다.
☞ pageProps는 전달 받은 props들이다.
Link
a태그는 다른 사이트로 이동할 때만 사용하고, 내부 페이지 이동 시 Link태그를 사용한다.
Head 태그
next/head 내부의 Head 컴포넌트를 받아 모든 컴포넌트에서 사용한다.
lifeCycle
1. nextJs서버가 GET요청을 받는다. 2. GET 요청에 맞는 pages/Component를 찾는다. 3. _app.tsx의 getInitialProps가 있다면 실행한다. 4. route에 맞는 페이지의 Component의 getInitialProps가 있다면 실행한다. pageProps들을 받아온다. 5. _document.tsx의 getInitialProps가 있다면 실행한다. pageProps들을 받아온다. 6. 모든 props들을 구성하고, _app.tsx -> page Component 순서로 렌더링 7. 모든 Content를 구성하고 _document.tsx를 실행하여 html 형태로 출력한다. |
⌘ 문의사항이나 피드백은 언제나 환영합니다.
'프로그래밍 언어 > NEXT.JS' 카테고리의 다른 글
[NEXT.JS] #6 _app.js (0) | 2023.11.14 |
---|---|
[NEXT.JS] #5 CSS STYLING (2) (0) | 2023.11.13 |
[NEXT.JS] #4 CSS STYLING (1) (0) | 2023.11.13 |
[NEXT.JS] #3 pages와 페이지 이동 (0) | 2023.11.13 |
[NEXT.JS] #2 Project 생성하기 (2) | 2023.11.13 |