[Next.js] (4) - App Router
2024. 11. 1. 08:45ใfront-end/Next.js
728x90
๐ Dynamic Routing
- ์ฌ๋ฌ๊ฐ์ URL ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ ๋ [...id] Catch all segment
- ํ๋ผ๋ฏธํฐ๊ฐ ์์ ๊ฒฝ์ฐ์ [[...id]] Optional catch all segment
๐ Layout ๋์ ๋ฐฉ์
- Layout ์์ chlidren ์ผ๋ก page ๊ฐ ๋ค์ด์์
- Layout ์ด ์ ์๋๋ก ์์ ๊ฒฝ์ฐ ์ค์ฒฉ๋จ
๐ Route Group (์๊ดํธ๋ก ์์ฑ)
- ๊ฒฝ๋ก์์๋ ์๋ฌด๋ฐ ์ํฅ์ ๋ฏธ์น์ง ์์
- ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ฒฝ๋ก๋ค์ ํ๋์ ํ์ด์ง๋ก ๋ฌถ์ด๋ ์ ์์
- ๊ฒฝ๋ก๊ฐ ๋ฌ๋ผ๋ ๊ณตํต์ ์ธ layout์ ์ ์ฉํ๊ณ ์ถ์ ๋
๐ React Server Component (React 18v ๋ถํฐ, ์๋ก์ด ์ ํ์ ์๋ฒ์ธก ์ปดํฌ๋ํธ )
- Page Router ๋ฒ์ ์ Next.js ์๋ ์ด๋ค ๋ฌธ์ ๊ฐ ์์์๊น?
- ์ ์ ํ์ด์ง ์ปดํฌ๋ํธ๋ Hydration ์ ํ์๋ก ํ์ง ์์
- ๊ตณ์ด ๋ธ๋ผ์ฐ์ ์ธก์์ ํ ๋ฒ ๋ ์คํํ ํ์๊ฐ ์์์
- ๋ถํ์ํ๊ฒ JS๋ฒ๋ค๋ก ๋ฌถ์ฌ์ JS๋ฒ๋ค ํฌ๊ธฐ๊ฐ ๋๋ฌด ์ปค์ง
- JS Bundle Size ์ปค์ง -> Hydration ์ ๋ง์ด ํด์ผํด์ ์๋๊ฐ ๋๋ ค์ง -> TTI ๊น์ง ๋ฆ์ด์ง
- ์ํธ์์ฉ์ด ์๋ ์ปดํฌ๋ํธ๋ฅผ ํด๋ผ์ด์ธํธ์ธก์ ์ ๋ฌ๋์ง ์๋๋ก ๋ค๋ฅธ ์ ํ์ผ๋ก ๋ถ๋ฆฌ
- Next ์๋ฒ์ธก์์ ์ฌ์ ๋ ๋๋ง ํ ๋๋ง UI ๋ ๋๋ง์ด ํ ๋ฒ๋ง ์คํ ๋๋๋ก!
- ์๋ฒ์ธก์์๋ง ์คํ๋๋ ์ปดํฌ๋ํธ
- ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ ์ด 2๋ฒ ์คํ (์๋ฒ, ํด๋ผ์ด์ธํธ ๋ชจ๋ ์คํ)
- ์ฌ์ ๋ ๋๋ง ์๋ฒ์์ 1๋ฒ ์คํ (์๋ฒ ์ธก)
- JS ๋ฒ๋ค ํ ํ์ด๋๋ ์ด์ ํ ๋ ๋ธ๋ผ์ฐ์ ์์ 1๋ฒ ์คํ (ํด๋ผ์ด์ธํธ ์ธก)
- JS ๋ฒ๋ค์๋ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ง ํฌํจ (์๋ฒ ์ปดํฌ๋ํธ ์ ์ธ)
- ํ์ด์ง ๋๋ถ๋ถ์ ์๋ฒ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑํ ๊ฒ์ ๊ถ์ฅ
- ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ
- ๋ธ๋ผ์ฐ์ ์ธก์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ React Hooks๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅ
- ์ํธ์์ฉ์ด ์์ผ๋ฉด ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ
- ์ํธ์์ฉ์ด ์์ผ๋ฉด ์๋ฒ ์ปดํฌ๋ํธ
- ๋งํฌ๋ HTML ๊ณ ์ ์ฝ๋
๐ React Server Component ์ฃผ ์ ์ฌ ํญ
- ์๋ฒ ์ปดํฌ๋ํธ์๋ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋ ์ฝ๋๊ฐ ํฌํจ๋๋ฉด ์๋จ
- ๋ธ๋ผ์ฐ์ ์ฝ๋๊ฐ ๋ด๊ฒจ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋๋ ์๋ฌ๋ ์ ์์(์ฃผ์)
- ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์๋ ํด๋ผ์ด์ธํธ์์๋ง ์คํ๋์ง ์์
- ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์์ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ import ํ ์ ์์
- ์๋ฒ ์ปดํฌ๋ํธ์์ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์๊ฒ ์ง๋ ฌํ ๋์ง ์๋ Props๋ ์ ๋ฌ ๋ถ๊ฐ
๐ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์์ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ import ํ ์ ์์
- ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์์ ์๋ฒ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์ฌ ๊ฒฝ์ฐ Next.js ์์๋ ์๋์ผ๋ก ์๋ฒ์ปดํฌ๋ํธ๋ฅผ ํด๋ผ์ด์ธํธ์ปดํฌ๋ํธ๋ก ๋ณ๊ฒฝํจ
ํด๋ผ์ด์ธํธ์ปดํฌ๋ํธ ์์ ์๋ฒ์ปดํฌ๋ํธ๋ฅผ ๋ฃ์ ์ ์๋ ๋ฐฉ๋ฒ!!!!
- ์ง์ import ํด์ ์ฌ์ฉํ์ง ์๊ธฐ
- Children ์ผ๋ก ๋๊ฒจ์ค ๊ฒฝ์ฐ Next๋ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ก ๋ณ๊ฒฝํ์ง ์์
- ์๋ฒ์ปดํฌ๋ํธ ๊ฒฐ๊ณผ๋ฌผ๋ง Props๋ก ๋๊ฒจ์ฃผ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์์๋ ์๋ฒ์ปดํฌ๋ํธ๋ฅผ ์คํํ์ง ์์๋ ๋จ
๐ ์๋ฒ ์ปดํฌ๋ํธ์์ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์๊ฒ ์ง๋ ฌํ ๋์ง ์๋ Props๋ ์ ๋ฌ ๋ถ๊ฐ
- ํจ์๋ ์ง๋ ฌํ๊ฐ ๋ถ๊ฐ๋ฅ ํจ! ํจ์๋ฅผ props๋ก ๋ณด๋ผ ์ ์์
๐ ์ฌ์ ๋ ๋๋ง ๊ณผ์ ์งํ
- RSC Payload(์ง๋ ฌํ)์๋ ์๋ฒ ์ปดํฌ๋ํธ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋๋ค
- ์๋ฒ ์ปดํฌ๋ํธ์ ๋ ๋๋ง ๊ฒฐ๊ณผ
- ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์ ์์น (ํจ์๋ ์ง๋ ฌํ๊ฐ ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ ๋ฌ ๋ถ๊ฐ๋ฅ)
- ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์๊ฒ ์ ๋ฌํ๋ Props ๊ฐ
๐ Navigation
... ๊ฐ์๋ฃ๊ณ ๋ง์ ์์ฑ์์
์ถ์ฒ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs/dashboard
728x90
'front-end > Next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Next.js] (2) - ์ฌ์ ๋ ๋๋ง (0) | 2024.10.31 |
---|---|
[Next.js] (1) - React.js ์ ์ฉ์ ์น ๊ฐ๋ฐ 'Framework' (0) | 2024.10.31 |