ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js ํ์ต์ ๋ฆฌ์ฉ์ ๋๋ค.
1.1) Next.js๋ฅผ ์๊ฐํฉ๋๋ค.
1.2) Next.js ์ฌ์ ๋ ๋๋ง ์ดํดํ๊ธฐ
1.3) ์ค์ต์ฉ ๋ฐฑ์๋ ์๋ฒ ์ธํ ํ๊ธฐ
1.4) ๋ณธ๊ฒฉ์ ์ธ ํ์ต์ ์์
Next.js ๋ผ๋ ๊ธฐ์ ์ ์ด๋ค ํน์ง์ ๊ฐ์ง๊ณ ์๋๊ฐ?
Next.js
- Next.js : ๋ฆฌ์กํธ๋ง์ ์ํ ๋ฆฌ์กํธ ์ ์ฉ์ ์น ๊ฐ๋ฐ ํ๋ ์์ํฌ
๊ธฐ์กด์ ๋ฆฌ์กํธ ๊ธฐ์ + ํ์ด์ง ๋ผ์ฐํ
+ ๋ค์ํ ์ต์ ํ ๊ธฐ๋ฅ ๋ฑ๋ฑ์ ์ถ๊ฐ ๊ธฐ๋ฅ๋ค์ ๋ช ๊ฐ ๋ง๋ถ์ฌ ๋์ ๋ฆฌ์กํธ์ ํ์ฅํ
vercel์์ ๊ฐ๋ฐ
Framework vs Library
Next.js๋ ๋ฆฌ์กํธ ์ ์ฉ์ ์น ๊ฐ๋ฐ ํ๋ ์์ํฌ์ด์ง๋ง, React๋ UI ๊ฐ๋ฐ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
1. ๊ธฐ๋ฅ ๊ตฌํ์ ์ฃผ๋๊ถ์ด ๋๊ตฌ์๊ฒ ์๋๊ฐ
Framework : ์ฃผ๋๊ถ์ Framework๊ฐ ๊ฐ์ง๋ค -> ์์ ๋๊ฐ ๋ฎ๋ค
Library : ์ฃผ๋๊ถ์ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ง๋ค. -> ์์ ๋๊ฐ ๋๋ค
ํ๋ก๊ทธ๋๋ฐ์์ ์ด๋ฐ ์์ ๋๊ฐ ๋๋ฌด ๋์๋ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
๋ฆฌ์กํธ์ ๊ฐ์ด ์์ ๋๊ฐ ๋ฎ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ ์ธํ ๋ชจ๋ ๊ธฐ๋ฅ๋ค์ ์ง์ ๋ง๋ค์ด์ผ ํ๋ค.
ํ์ง๋ง ์์ ๋๊ฐ ๋๋ค๋ฉด ์น ๊ฐ๋ฐ์ ์์ด์ ๊ฑฐ์ ๋ชจ๋ ํ์์ ์ธ ๊ธฐ๋ฅ๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ค๋ค.
๋ฐ๋ผ์ Next๊ฐ ์ฃผ๋ ์ฅ์ ์?
ํ์ด์ง ๋ผ์ฐํ , ์ต์ ํ, ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ ์ ์๋ค๋ ์ ์์
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ณด๋ค ํจ์ฌ ๋ ํธํ๊ณ ๋น ๋ฅด๊ฒ ์น์๋น์ค๋ฅผ ๊ตฌ์ถํ ์ ์๋ค.
Next.js์ ์ฌ์ ๋ ๋๋ง
๋ฆฌ์กํธ์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋๋๋ง์ด๋?
ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์์ ์ง์ ํ๋ฉด์ ๋ ๋๋งํ๋ ๋ฐฉ์
1. ์ ์ ๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ด๊ธฐ ์ ์ ์์ฒญ์ ์น์๋ฒ์๊ฒ ๋ณด๋ธ๋ค.
2. ์น์๋ฒ๋ ๋น ๊ป๋ฐ๊ธฐ html ํ์ผ์ธ index.html์ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ธ๋ค.
3. ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ html ํ์ผ์ ๋ ๋๋งํ๋ค.
4. ์น์๋ฒ๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋(๋ฆฌ์กํธ ์ฑ)๋ฅผ ํ๋์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ก ๋ฌถ์ด ๋ฒ๋ค๋งํ์ฌ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ธ๋ค.
5. ๋ธ๋ผ์ฐ์ ๋ ๋ฒ๋ค๋ง๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์ง์ ์คํํ๊ณ ํ๋ฉด์ ๋ ๋๋งํ๋ค.
7. ์ด๋๊ฐ ๋๋ฉด ์ ์ ๋ ์์ ์ด ์์ฒญํ ์นํ์ด์ง๋ฅผ ๋ณผ ์ ์๋ค. --- FCP
ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋๋๋ง์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์ : ์ด๊ธฐ ์ ์ ์ดํ์ ๋ฐ์ํ๋ ํ์ด์ง ์ด๋๋ค์ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
- ์๋ํ๋ฉด ๋ฆฌ์กํธ์ฑ์ ๋ชจ๋ ๋ฒ๋ค๋งํ์ ๋ ๋ชจ๋ ํ์ด์ง์ ํ์ํ ์ปดํฌ๋ํธ๊ฐ ๋ค ๋ค์ด์๊ฒ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ฐ๋ผ์ ์ด๊ธฐ ์ ์ ์ดํ๋ก๋ ์๋ฒ์๊ฒ ์๋ก์ด ํ์ด์ง๋ฅผ ์์ฒญํ ํ์๊ฐ ์๋ค.
๋จ์ : ์ด๊ธฐ ์ ์ ์๋๊ฐ ์ข ๋๋ ค์ง๋ค. FCP๊ฐ ๋๋ฆฌ๋ค.
FCP (First Contentful Paint) - ์นํ์ด์ง์ ์ฑ๋ฅ์ ๋ํํ ์ ๋๋ก ์ค์ํ ์งํ. ์ค๋ ๊ฑธ๋ฆด์๋ก ์ดํ๋ฅ ์ด ์ฌํจ
Next์ ์ฌ์ ๋ ๋๋ง์ด๋?
React.js์ ๋จ์ ์ ํด๊ฒฐํ Next.js๋ฅผ ๋ํํ๋ ๊ธฐ๋ฅ ์ค ํ๋
1. ์ ์ ๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ด๊ธฐ ์ ์ ์์ฒญ์ ์๋ฒ์๊ฒ ๋ณด๋ธ๋ค.
2. ๋ฅ์คํธ ์๋ฒ๊ฐ ์๋ฒ ์ธก์์ ์ง์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋(๋ฆฌ์กํธ ์ฑ)๋ฅผ ์คํ์์ผ ๋ชจ๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ค์ HTML๋ก ๋ณํ(๋ ๋๋ง)ํ๋ค.
3. ์์ฑ๋ HTML์ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ธ๋ค.
4. ๋ธ๋ผ์ฐ์ ๋ HTML์ ๊ทธ๋๋ก ํ๋ฉด์ ๋ ๋๋งํ๋ค. ---FCP
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ HTML๋ก ๋ณํํ๋ ์์ ์ญ์ ๋ ๋๋ง์ด๋ผ๊ณ ํ๊ณ , ๋ธ๋ผ์ฐ์ ๊ฐ ์ปจํ ์ธ ๋ฅผ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๊ณผ์ ๋ ๋ ๋๋ง์ด๋ผ๊ณ ํ๋ค.
- ํท๊ฐ๋ฆด ์ ์์ง๋ง ๋ ๋๋ง์ด ๋ ๊ฐ์ ๋ป์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด์ฉ ์ ์๋ค.
ํ๋ฉด์ ์ปจํ ์ธ ๋ค์ด ๋ค ๋ณด์ด๊ธด ํ์ง๋ง ์์ง ํด๋ฆญ๊ณผ ๊ฐ์ ์นํ์ด์ง์ ์ํธ์์ฉ์ ๋ถ๊ฐ๋ฅํ ์ํ์ด๋ค.
5. ๋ฅ์คํธ ์๋ฒ๊ฐ ๋ธ๋ผ์ฐ์ ์๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋(๋ฆฌ์กํธ ์ฑ)๋ฅผ ๋ฒ๋ค๋งํ์ฌ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ธ๋ค.
6. ๋ธ๋ผ์ฐ์ ๋ ์ด ๋ฒ๋ค๋งํ ํ์ผ์ ํ์ฌ ํ๋ฉด์ ๋ ๋๋ง ๋์ด์๋ HTML ์์๋ค๊ณผ ์ฐ๊ฒฐ์ ํ๋ค. (Hydration)
hydration(์ํ) : HTML๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ์ฐ๊ฒฐํ๋ ๊ณผ์ . ๋ฉ๋ง๋ผ ์๋ HTML ์์๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ๋ผ๋ ๋ฌผ์ ๋ฟ๋ ค์ฃผ๋ ๊ฒ๊ณผ ๋น์ทํ๋ค๊ณ ํด์ ์ํ(hydration)๋ผ๊ณ ํ๋ค.
7. ์ํธ์์ฉ ๊ฐ๋ฅ --- TTI
TTI(Time to Interactive) : ์ํธ์์ฉ๊น์ง ๊ฐ๋ฅํด์ง ์์
8. ์ดํ ํ์ด์ง ์ด๋์ CSR๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์งํํ๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์๊ฒ ๋ณ๋์ ํ์ด์ง๋ฅผ ์ถ๊ฐ๋ก ์์ฒญํ์ง ์๊ณ ๋ธ๋ผ์ฐ์ ์ธก์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์คํํด์ ์ปดํฌ๋ํธ๋ฅผ ๊ต์ฒดํ๋ค.
๋ฐ๋ผ์ Next.js์ ์ฌ์ ๋ ๋๋ง์ ํตํด ๋ฆฌ์กํธ์ ๋๋ฆฐ FCP๋ฅผ ๊ฐ์ ํ๊ณ CSR์ ์ฅ์ ์ ๊ทธ๋๋ก ๊ณ์นํ ๋ฐฉ์์ด๋ค.
์ค์ต์ฉ ์๋ฒ ์คํ
๋น๋ : npm run build
์คํ : npm run start
๋ก์ปฌ์ฃผ์ : localhost:12345
api : localhost:12345/api
๋ฐ์ดํฐ ์กฐํ : npx prisma studio
'FE > Next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Next.js] page router - API Routes (0) | 2025.05.03 |
---|---|
[Next.js] page router - ํ๋ฆฌํ์นญ (0) | 2025.05.03 |
[Next.js] Page Router, ์ค์ , ๋ค๋น๊ฒ์ดํ (1) | 2025.05.02 |
[Next.js] reactStrictMode (0) | 2025.04.21 |
[Next.js] ํ๋ก์ ํธ ์์ฑ (0) | 2024.06.10 |