์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- nextjs
- frontend
- react
- javascript
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- ํฐ์คํ ๋ฆฌ
- ๊ฐ๋ฐ์
- backend
- typescript
- ํ๊ณ ๋ก
- Today
- Total
๐ My name is Ez : ์ฝ๋ค ์ฌ์ ๊ฐ๋ฐlife
[NextJs] : App Router ? Server Component? ๋ณธ๋ฌธ
๋ค์ ์์ํ๋ ํ๋ก์ ํธ์์๋ Next.js 13 ๋ฒ์ ์์ ์ฌ์ฉํ๋ App Router ๋ฐฉ์์ ์ฌ์ฉํ๋ค๊ณ ํ๋ค... (๊ถ๊ณ ์ฌํญ์ด๋ผ๊ณ ํด์ ์ฌ์ฉํ๋ค๊ณ ํจ)
์ฌ์ค ๋ง์ ์๋ฃ๋ ์ฐธ๊ณ ํ ๋งํ ๋ ํผ๋ฐ์ค๊ฐ ๋ถ์กฑํด์ ์์ง๊น์ง ๊ฑฑ์ ์ด ๋๊ธด ํ๋ค. ๊ธฐ์กด์ Page Router ๋ฐฉ์์ด ๋ ์ต์ํด์ ๊ทธ๋ฐ ๊ฑธ๊น?..
13 ๋ฒ์ ์์๋ ์ผ๋จ Page ํด๋ ์์์ ์ํ๋ ____. tsx๋ฅผ ๋ง๋ค์ด์ ๋ผ์ฐํ ํ๋ค๋ฉด App Router๋ ํด๋๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ page.tsx๋ฅผ ๋ง๋ค์ด์ผ์ง ๊ฒฝ๋ก๊ฐ ์๊ธด๋ค๊ณ ํ๋ค.
์ฌ์ค ๋ผ์ฐํ ์ ๋์ผ ๊ธ๋ฐฉ ์ต์ํด์ง๋๊น....
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ณ ํด๋๋ง๋ค ์๋ ์ด๋ฏธ์ง์ฒ๋ผ File Convention์ด ์กด์ฌํ๋ค. (๊ณต์๋ฌธ์ ์ฐธ๊ณ !!)
https://nextjs.org/docs/app/api-reference/file-conventions
์ง์ ๊ฐ๋จํ๊ฒ ๊ตฌํํด์ ํด๋ณด๊ฑด layout, loading, error, page ์ ๋ ๊ตฌํํด ๋ดค๋ค.
layout ๊ฐ๋ณ ์ปดํฌ๋ํธ ์์ ๊ณ ์ ์ ์ผ๋ก ๊ณ์ ์ ์ง๋๋ ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ๊ทธ ํ์๋ก page์์ ์์ฑํ ์ปดํฌ๋ํธ๋ค์ด ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ฅผ ๋ค์ด search๋ผ๋ ํด๋ ๋ด์ ํ์ ํด๋๋ก [searchParam]์ด๋ผ๊ณ ์์ฑํ๊ณ ์ด ํด๋ ๋ด์ ๋๊ฐ์ด page, loading ํ์ผ์ ๋ง๋ค๊ณ ํด๋น page์์์ ๋น๋๊ธฐ์ฒ๋ฆฌ ํต์ ์ ํ๋๊น loading์ด ์๋์ผ๋ก ๋์๋ค. ( ์ด์ ์๋ react-query๋ฅผ ์ฌ์ฉํ๋ค๋ฉด isLoading์ ์ฌ์ฉํ์ ํ ๋ฐ)
์๋ฌดํผ ์ ๊ธฐ!
* ๊ฐ๋จํ ๊ตฌํ์ ๊ณต์๋ฌธ์๋ฅผ ๋ณด๊ณ ํ๋์ฉ ๋ฐ๋ผ ํด ๋ณด๋ฉด ์ข ๋ ์ดํด๊ฐ ํธํ ๊ฒ ๊ฐ๋ค.
์ฌ๊ธฐ๊น์ง๋ ๊ทธ๋ญ์ ๋ญ ํ ๋ง!
Server Component๋ผ๋ ๊ฒ์ ๋ณด๊ณ ๋๋ฌด ํท๊ฐ๋ ธ๋ค. ( ์ฐพ๋ค ๋ณด๋ React18 ๋ฒ์ ์๋ฃ๋ฅผ ๋ณด๋ ๊ฒ๋ ๋์์ง ์์๋ค. )
์ฐ๋ฆฌ๊ฐ ๊ธฐ์กด์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๊ฐ Client component๋ผ๊ณ ์๊ฐํ๊ณ ๋น๊ตํ๋ฉด ์ดํด๊ฐ ์ข ๋ ํธํ๋ค.
๊ฐ๋จํ๊ฒ Client component๋ฅผ ์ดํด๋ณด๋ฉด
- onClick๊ณผ ๊ฐ์ ์ํธ์์ฉ
- React lifecycle hooks๋ฅผ ์ฌ์ฉ (useEffect, useState...)
- ์ต์๋จ์ 'use client'๋ฅผ ์ ์ธ ( ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ก ์ฌ์ฉํ๋ ค๋ฉด ์ ์ธํด์ค์ผ ํจ!)
์ด๋ ๊ฒ ์ฌ์ฉ๋๋ ์ปดํฌ๋ํธ๋ฅผ Client Component๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
Sever Componet๋ ์ํธ์์ฉ์ด ์๊ณ , ๋จ์ํ๊ฒ ํ ์คํธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ์๋ฏธํ๋ค.
์๋ฒ ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ ๋ฌํด์ผ ํ๋ ๋ฐ์ดํฐ ์์ ์ค์ผ ์ ์์ด์ ์ฑ๋ฅ์ด ์ฌ๋ผ๊ฐ๊ณ ๋ก๋ฉ์๋๋ ๋นจ๋ผ์ง๋ค๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์์์ฝ๋๋ฅผ ๋ณด๋ฉด ์กฐํํ๋ api๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ ๋์ ์ฝ๋๋ก๋ง ๊ตฌ์ฑ๋์ด ์์๋ค.
(์๋ฌดํผ ์ด๋ ๊ฒ ์ฌ์ฉํ ํ์ด์ง๋ ์์ด์... ์ดํด์ ๋๋ง ํ๊ณ ๋๊ฒผ๋ค.)
Sever Componet๋ฅผ ์ธ์ ์ฌ์ฉํด์ผ ํ ์ง ํ์คํ๊ฒ ๊ฐ์ด ์กํ์ง๋ ์๋๋ค. ๋ด๊ฐ ํ๋ ๋๋ถ๋ถ์ ์ปดํฌ๋ํธ๋ Client Compoent๋ก ๋ฐ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐ๋๋ค... ๋๋ถ๋ถ ์ํธ์์ฉ์ ํ๊ณ , ๋ผ์ดํ ์ฌ์ดํด ํ ๋ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ง๊ธ์ ๋น ๋ฅด๊ฒ ์ดํดํ ๋ถ๋ถ๋ง ์ด ๊ฑฐ๋ผ์ ์ดํ์ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ์ดํดํ ๋ฐ๋ฅผ ๋ค์ ํ๋ฒ ์ ๋ฆฌํด์ผ๊ฒ ๋ค.
์ด๋ ต๋ค๐ฅฒ
์ฐธ๊ณ ๋งํฌ
https://nextjs.org/blog/next-13-4
Next.js 13.4
Next.js 13.4 moves App Router to stable, Turbopack to beta, and introduces experimental support for Server Actions.
nextjs.org
'โจ๏ธ Web Front-End > NextJs' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Design Pattern] : Atomic Design (์ํ ๋ฏน ๋์์ธ) (1) | 2023.07.20 |
---|