์ด๋ค ์ปดํฌ๋ํธ๋ค์ด ๋ฆฌ๋๋๋ง ๋๋์ง ํ์ธ ๊ฐ๋ฅ ๋ฌธ์ ์ ํ์ฌ ๋ฒํผ๊ฐ์ด ๊ณ์ ๋ฆฌ๋๋๋ง -> ๋ถํ์ํ ๋๋๋ง ์นด์ดํธ๋ง ๋ฐ๋๋ฉด๋๋๋ฐ ๋ฒํผ์ด ๋ฆฌ๋๋๋ง๋จ. ์ปดํฌ๋ํธ์์ ๋ถ๋ฌ์จ ์คํ ์ด ๊ฐ๋ค์ค, ํ๋๋ผ๋ ๋ณ๊ฒฝ๋๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋๋๋ง๋๋ค. ์ ์ฒด ์คํ ์ด ๊ฐ์ฒด๊ฐ ๊ณ์ ๋ถ๋ฌ์์ง (์ง๊ธ
app/โโโ shop/โ โโโ layout.tsxโ โโโ @modal/โ โ โโโ (..)product/โ โ โโโ id/โ โ โโโ page.tsxโ โโโ products/โ โโโ page
React๋ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋๋ฉด ๊ทธ ์์ ์๋ ๋ชจ๋ JSX๋ฅผ ๋ค์ ๋ง๋ญ๋๋ค!์?์คํ ๊ฒฐ๊ณผ:์คํ ๊ฒฐ๊ณผ:์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋๋ฉด โ ์์ ์๋ JSX๋ฅผ ๋ค์ ๋ง๋ฆchildren์ ์ด๋ฏธ ๋ง๋ค์ด์ง ๊ฒ โ ๋ค์ ์ ๋ง๋ฆ!๋ถ๋ชจ์์ ๋ง๋ค์ด์ ์ ๋ฌ โ ์ต์ ํ๋จ โ ์ด์ ์ดํด๋์ จ๋์?
์ฅ์ :ํด๋์ค๋ช ์ถฉ๋ ๋ฐฉ์ง์๋์ผ๋ก ๊ณ ์ ํ ์ด๋ฆ ์์ฑ์ปดํฌ๋ํธ ๋จ์ ์คํ์ผ๋งStreaming์ ์ฅ์ :์ ์ฒด ํ์ด์ง๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์์์ค๋น๋ ๋ถ๋ถ๋ถํฐ ๋ณด์ฌ์ค์ฌ์ฉ์ ๊ฒฝํ ํฅ์Parallel Routes ์ฅ์ :์ฌ๋ฌ ํ์ด์ง๋ฅผ ๋์์ ๋ ๋๋ง๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ ๋ก๋ฉ/์๋ฌ ์ฒ๋ฆฌ๋์๋ณด๋, ์์ ํผ๋
ํ์ ์ปดํฌ๋ํธ๊ฐ ๊ฐ์ ์ํ๋ฅผ ๊ณต์ ํ ๋ ๊ณตํต ๋ถ๋ชจ๋ก ์ํ๋ฅผ ๋์ด์ฌ๋ฆฌ๋ ํจํดMetadata API: SEO๋ฅผ ์ํ ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ์ํ ๋์ด์ฌ๋ฆฌ๊ธฐ: ์ปดํฌ๋ํธ ๊ฐ ์ํ ๊ณต์ ์ ๊ธฐ๋ณธ ํจํดSEO: JSON-LD ๊ตฌ์กฐํ ๋ฐ์ดํฐ๋ก ๊ฒ์ ์ต์ ํํ๊ฒฝ๋ณ์: ๋ณด์๊ณผ ํ๊ฒฝ๋ณ ์ค์ ๋ถ๋ฆฌ์ปค์คํ
1๋ ์ฐจ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ Next.js ํ์ต ์ฌ์ ๐ฅ์ค๋์ Next.js์ ๋ ์ด์์ ์์คํ ๊ณผ React ์ํ๊ด๋ฆฌ ํจํด์ ํจ๊ป ๋ฐฐ์๋ณด์์ต๋๋ค!Next.js Layout๊ณผ Template์ ์ฐจ์ด์ ์์ ์ดํดuseState์ useReducer ์ธ์ ์ฌ์ฉํ ์ง ํ๋จ ๊ธฐ์ค
๐ ํ์ต ๋ชฉํ Next.js ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ ์์คํ ๋ง์คํฐ React ๋ถ๋ณ์ฑ๊ณผ ์ํ ์ ๋ฐ์ดํธ ์์ ์ดํด ๋์ ๋ผ์ฐํ ์ค์ต์ผ๋ก ์ค๋ฌด ๋ฅ๋ ฅ ํฅ์ ๐ Part 1: ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ ์์คํ ๐ฏ ์ ํต์ ์ธ ๋ผ์ฐํ vs ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ ์ ํต์ ์ธ React ๋ผ์ฐํ (

๐ฏ ํ์ต ๋ชฉํ Next.js์ ๋ ๋ผ์ฐํ ์์คํ ์ฐจ์ด์ ์์ ์ดํด React useState์ ๋ฐฐ์น ์ ๋ฐ์ดํธ ๋ฉ์ปค๋์ฆ ๋ง์คํฐ ์ค๋ฌด์์ ์ด๋ค ๋ผ์ฐํฐ๋ฅผ ์ ํํด์ผ ํ๋์ง ํ๋จ ๋ฅ๋ ฅ ์ต๋ ๐ Part 1: Pages Router vs App Router ์ฌํ ๋ถ์ 1

Next.js ํ๋ก์ ํธ์์ Microsoft Graph API๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ค ์ผ์ ์ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ์ต๋๋ค. ๊ฐ๋ฐ ๋ชจ๋(yarn dev)์์๋ ์๋ฒฝํ๊ฒ ์๋ํ์ง๋ง, yarn build ํ ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌํ์๋ง์ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ด ๋ฌธ์

๊ฐ์ ์ถ์ฒ: ํ์คํ ์์ฑ Supabase๋ก ์น์ฌ์ดํธ 3๊ฐ ํด๋ก ํ๊ธฐ (Next.js 14)/recoil/atoms.ts๋ ์ด์์์ provider ๊ฐ์ธ์ฃผ๊ธฐprovider ๋ง๋ค์ด์ฃผ๊ธฐ๋ ์ด์์์ ๊ฐ์ธ์ฃผ๊ธฐ
๊ฐ์ ์ถ์ฒ: [ํ์คํ ์์ฑ] Supabase๋ก ์น์ฌ์ดํธ 3๊ฐ ํด๋ก ํ๊ธฐ (Next.js 14) ๊ฐ์ธ์ ์ผ๋ก ์ ๋ฆฌํ์ต๋๋ค! 'use server'์ ๋ญ๊น? ์๋ฒ ์์ app/action.ts ์๋๋ api/user/route.ts ์ด๋ ๊ฒ api๋ฅผ ๋ง๋ค์ด์ app/user/page.tsx ํ๋ํ๋ fetch ํด์ผํ์. 'use server'๊ฐ ์๊ธฐ๊ณ ...

next.js 1\. ๊ทธ๋ฅ ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ก ์ฌ์ฉํด๋ ๋์ค๋๊ตฌ๋..useParams๋์ ๋ญ์ฐจ์ด์ผ๊น?route.tsapi ๊ตฌ์ถ๊ฐ๋ฅํ ํ์ผhttps://nextjs.org/docs/app/api-reference/file-conventions/route์ด๋ ๊ฒ API
๊ฐ์ธ ๋๋ ์๊ท๋ชจ ํ์ด ํ์คํ ๊ฐ๋ฐ์ ํ๋๋ฐ ํ์ํ ๋๋ถ๋ถ์ ๊ฒ๋ค์ด ๊ฐ์ถฐ์ ธ์๋ค.์คํํธ์ or ๊ฐ์ธ ํ๋ก์ ํธ ํน์ฑ์ ๋ณต์กํ ์๊ตฌ์ฌํญ์ด ์๊ธฐ๊ธฐ ์ฌ์ด๋ฐ, ์ด๋ฅผ ๋์ํ๊ธฐ๊ฐ ํจ์ฌ ์ฉ์ดํ๋ค.๋ณด์์ ์ด์๋ก ์ง์ ์๋ฒ๊ตฌ์ถ์ ํด์ผํ ๋, Supabases๋ ๋น๊ต์ ์ฝ๊ฒ ์ด์ ์ด ๊ฐ๋ฅํ๋ค

์๋ฒ์์ ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ๋ ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ํฌ๋ฉด ์๊ฒ ์ชผ๊ฐ์ ๋ฌผ์ ํ๋ฅด๋ฏ ํ๋์ฉ ๋ณด๋ด์ค๋ค!์์ฒด์ ์ผ๋ก ์ ๊ณตํ๊ณ ์๋ค.์ผ๋จ ๋ญ๋ผ๋ ๋ณด์ฌ์ค ์ ์์.์ฆ์ ๋ณด์ฌ์ค์์๋ ๊ฒ๋ถํฐ ๋ณด์ฌ์ค๋ค.ํ์ ๋น๋๊ธฐ ํ์ด์ง ์ปดํฌ๋ํธ๊ฐ ๋๋๋ง๋๋ฉด ๋ก๋ฉํ์ ๋ณด์ฌ์ค๋ค.dynamicํ์ด์ง์์

๋ฃจํธ ๋ ์ด์์์์น๋ฐ ๋ ์ด์์์ ์ค๋ณต์ผ๋ก ๋ฐ์์ค๊ฒ๋๋ค.๋นํจ์จ์ ์ค์ด๊ธฐ์ํด\-> ํด๋ผ์ด์ธํธ ๋ผ์ฐํฐ ์บ์ ์ค๋ณต๋ ๋ ์ด์์์ ์ ์ฅํด๋๊ณ ๊ธฐํ ํ์ด์ง ์๋ธ ์ปดํฌ๋ํธ๋ง ๋ถ๋ฌ์ค๊ฒ๋๋ค.

์ํฐ๋์์ ๋์ค๋ ์ข์ ์ฑ๋ฆฐ์ง์ด๋ค! 2์ ๊ต์ก๋ ๋์จ ์ํฉ์ด๋ ์ ์ฒญ ํ์ค ๋ถ๋ค์ ๋นจ๋ฆฌ ์ ์ฒญ!! [2์ ๊ต์ก ์ ์ฒญ ๋งํฌ: https://www.wanted.co.kr/events/prechallengefe_30] ๋ชฉํ: ์๊ฐ์ ์๋ ์ ์๋ ๋ฐฉ๋ฒ 1. ๋ ๊ฑฐ์๋ฅผ ๋ค๋ฃจ๋

๐คFrontend Fundamentals-toss๋ก ๊ณต๋ถํ๊ธฐ โฌ๏ธ๊ถ๊ธํ์ ๋ถ๋ค์ ์๋ ์ฃผ์๋กโฌ๏ธ https://frontend-fundamentals.com/ ํ ์ค์์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๊ธฐ์ด/์ข์ ์ฝ๋๋ฅผ ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ๋ฆฌํด๋์๋ค. ๊ฐ๋ฐํ๋ฉด์ ์ข์ ์ฝ๋๋ ๋ฌด์

์ฑ๋ผ์ฐํธ next.js๋ ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๋ชจ๋ ์ปดํฌ๋ํธ๋ค์ด ์ด๋ป๊ฒ ๋์ํ๋์ ๋ฐ๋ผ ์๋์ผ๋ก dynamic, static์ผ๋ก ์ค์ ํ๋ ์ข์ ๊ธฐ๋ฅ์ด ์ด๋ฏธ ์์๊ธฐ๋ณธ๊ฐ๋ฌด์กฐ๊ฑด ๋ค์ด๋๋ฏน ํ์ด์ง๊ฐ ๋๋ค.ํ์ด์ง๋ฅผ ๊ฐ์ ๋ก Static ํ์ด์ง๋ก ์ค์ ํ์ด์ง ์ฟผ๋ฆฌ์คํธ๋ง๋ค์ ๋ฌด์กฐ๊ฑด u