ํํ์ด์ง ๋๋ฌธ์๋
ํ๋ก๋์ ์ฉ React ํ๋ ์์ํฌ
๋ผ๊ณ ์จ์ ธ์๋ Next.js
React ๊ฐ๋ฐ์์๊ฒ, NextJS์ ์ฌ์ฉ์ด ์ด๋ป๊ฒ ๋์์ด ๋๋์ง ์์๋ณด์
<๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ ์ง์>
React๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ์ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
ReactJS๋ ์๋ ํํฐ ํจํค์ง๋ก ํ๋ก ํธ์๋ ํ๋ก์ ํธ์ ์ถ๊ฐ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
React๋ฅผ ์ฌ์ฉํด ์ํธ ์์ฉ์ด ๊ฐ๋ฅํ(๊ฐ๋ฐ์ ์ ์ฅ์์ ๋ณต์กํ) ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค ์ ์๋ค.
์๋ฒ์ฌ์ด๋ ๋ ๋๋ง : ํด๋ผ์ด์ธํธ ์ธก์ด ์๋ ์๋ฒ ์ธก์ ํ์ด์ง ์์ ๋ ๋๋ง๋๋ ์ฝํ ์ธ ์ฒ๋ฆฌ๋ฅผ ์๋ฏธํจ
ํด๋น ํ์ด์ง๊ฐ ์๋ฒ์์ ๋ฏธ๋ฆฌ ๋ ๋๋ง์ด ๋๋ ์ฆ, ์์ฒญ์ด ์๋ฒ๋ก ๋๋ฌํ ๋ ๋ฐ์ดํฐ ํ์นญ์ด ์๋ฒ ์ธก์์ ์ฒ๋ฆฌ๋๋ค๋ฉด
๋ชจ๋ ๋ด์ฉ์ ํฌํจํ ํ์ด์ง๊ฐ ์ฌ์ฉ์์ ๊ฒ์ ์์ง ์ฌ์ฉ์๋ค์๊ฒ ์ ๊ณต๋ ์ ์๋ค.
๊ทธ๋ฌ๋ฉด ์ฌ์ฉ์๋ค์ด ํ์ด์ง๊ฐ ๊น๋นก์ด๋ ๋ก๋ฉ ์ํ๋ฅผ ๊ฒฝํํ ํ์๋ ์๊ณ
๊ฒ์ ์์ง์ ํตํด์๋ ํ์ด์ง์ ์ฝํ ์ธ ํ์ธ์ด ๊ฐ๋ฅํ๋ค. ์๋ฒ ์ธก ๋ ๋๋ง์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๋ ๊ฒ์ด๋ค.
React ํ์ด์ง, ์ปดํฌ๋ํธ๋ฅผ ์๋ฒ ์ธก์๊ฒ ๋ฏธ๋ฆฌ ๋ ๋๋ง ํด์ฃผ๊ธฐ์ ๊ฐ๋ฅํ๋ค.
ReactJS์๋ ์ฌ์ค ์๋ฒ ์ธก ๋ ๋๋ง์ ์ถ๊ฐํ๋๋ก ํด์ฃผ๋ ๋ด์ฅ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ง๋ง ์ ๋๋ก ์ถ๊ฐํ๊ธฐ๊ฐ ์๋นํ ์ด๋ ค์ธ ์ ์๊ณ
์ง์ ๊ฑฐ์ณ์ผ ํ ์ค์ ๋จ๊ณ๊ฐ ๋ ๋ง์์ง๋ค.
NextJS์๋ ๋ด์ฅ ์๋ฒ ์ธก ๋ ๋๋ง์ด ์์ด ์๋์ผ๋ก ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์ ์์ ์ ํจ์ฌ ์ฝ๊ฒ ํ ์ ์๋ค.
์ฆ NextJS๋ฅผ ์ฌ์ฉํด ์ฑ์ ๊ตฌ์ถํ๋ฉด ์๋ฌด ์ถ๊ฐ ์ค์ ์ด ์์ด๋ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด, ์๋ฒ ์ธก์์ ๋ ๋๋ง์ด ๋ฐ๋ก ๋์ด ์๋ ์ํ๊ฐ ๋๋ค.
๋ฐ๋ผ์ ์ด๋ ์ ์ ํ ๊ฒ์ ์์ง ์ต์ ํ๊ฐ ๋๋ค.
๊ฒ์ ์์ง์์ ์ก์ธ์คํด๋ ์ฝํ ์ธ ๋ฅผ ๋ณผ ์ ์๊ณ ์ฌ์ฉ์๋ค์ ๋ก๋ฉ๋๋ ๊น๋นก์ ํ์์ ๊ฒช์ง ์์์ ๋ก๋ฉ ๊ฒฝํ ๋ํ ๊ฐ์ ๋๋ค.
NextJS๋ฅผ ์ฌ์ฉํ๋ฉด ๊ถ๊ทน์ ์ผ๋ก ํด๋ผ์ด์ธํธ ์ธก ๋ฐ ์๋ฒ ์ธก์ ์ฝ๋๊ฐ ์ตํฉ์ด ๋๋ค.
ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ ๊ธฐ๋ฅ ์ ๊ณต
File-based Routing
๊ธฐ์กด์ React์๋ ๋ผ์ฐํฐ๊ฐ ์์ ์๋ค.
๋ผ์ฐํ ์ด๋ ์ฌ์ฉ์์๊ฒ ์ฌ๋ฌ ๊ฐ์ ํ์ด์ง๊ฐ ์๋ ๋ฏํ ์ฐฉ๊ฐ์ ๋ถ๋ฌ์ผ์ผํค๋ ๊ฒ์ด๋ค.
๋ผ์ฐํฐ๋ URL์ ํ์ธํด URL์ด ๋ณ๊ฒฝ๋ ๋
๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญ์ ์๋ฒ๋ก ๋ณด๋ด๋ ๊ธฐ๋ณธ ๋์์ ๋ฐฉ์งํ๊ณ (์๋ฒ์ ์ถ๊ฐ ์์ฒญ์ ๋ณด๋ด์ง ์๊ณ ๋),
๊ทธ ๋์ ์ React๋ฅผ ํตํด ํ์ด์ง ์์ ๋ค๋ฅธ ์ฝํ ์ธ ๋ฅผ ๋ ๋๋งํ๋ค.
URL์ ๊ธฐ๋ฐํด ํ๋ฉด์ ๋ํ๋๋ ๋ด์ฉ์ ๋ณ๊ฒฝ(๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ)์ด ๋ฐ๋ก ๋ผ์ฐํ ์ด๋ค.
React Router๋ ํ๋ฅญํ ํจํค์ง์ด์ง๋ง ๋ณ๋์ ์ฝ๋๋ฅผ ๋ฐ๋ก ์์ฑํด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ณ ํด๋์ ํ์ด์ง๋ก์ ์๋ํ๋ ์ปดํฌ๋ํธ๋ฅผ ์ ์ฅํ๋๋ฐ
์ด ์ปดํฌ๋ํธ๊ฐ ์ฝ๋ ๋ด์์ ๋ผ์ฐํธ ์ค์ ์ ๋ชจ๋ฐฉํ๋ค๊ณ ๋ณผ ์ ์๋ค.
ํ์ง๋ง NextJS๋ก๋ ์ฝ๋ ๋ด ๋ผ์ฐํธ ์ ์๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๊ฒ ๋๋ค.
NextJS๋ฅผ ์ฌ์ฉํ๋ฉด, ํ์ผ๊ณผ ํด๋์ ํ์ด์ง์ ๋ผ์ฐํธ๋ฅผ ์ ์ํ๊ฒ ๋๋ค.
pages๋ผ๋ ํด๋์ ํ์ด์ง๊ฐ ์ง์ํ๋ ๋ผ์ฐํธ(Route)์ ๊ฒฝ๋ก(Path)๋ฅผ ๊ตฌ์กฐํํ๊ฒ ๋๋ค.
์ค์ฒฉ ๋ผ์ฐ๋, ํน์ ๋์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ผ์ฐํธ ๋ฑ์ ๋ชจ๋ ์ง์ํ๋ค.
ReactJS์ ํ์คํ ํ๋ ์์ํฌ
NextJS๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ฐ๋ฐ์๋ค์ด React ํ๋ก์ ํธ์ ๋ฐฑ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ์์ ๋ ์์ํ๊ฒ ํ ์ ์๋ค.
์๋ฒ ์ธก ์ฌ์ ๋ ๋๋ง์ ํตํ ํด๋ผ์ด์ธํธ ์ธก ์ฝ๋ ๋ฟ๋ง ์๋๋ผ
์๋ฅผ ๋ค์ด ํ์ผ ์์คํ ์ผ๋ก ์๋์ ํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ๋ฌ์ด ๋๋ ๋ ๋ฆฝ์ ์ธ ๋ฐฑ์๋ ์ฝ๋๋ ํฌํจํ๋ ํ์คํ React ํ๋ก์ ํธ๊ฐ ์์ ๋ NextJS๋ฅผ ์ฌ์ฉํ๋ฉด NodeJS ์ฝ๋๋ฅผ ํตํด ์์ฃผ ์ฝ๊ฒ ๋ฐฑ์๋ API๋ฅผ React ํ๋ก์ ํธ๋ก ์ถ๊ฐํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค, ํน์ ํ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ฝ๋๋
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ธ์ฆ์ ์ถ๊ฐํ๋ ๋ฑ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ์์ NextJs๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฃผ ๊ฐํธํด์ง๋ค.
๊ทธ๋ฌ๋ฉด ๋ ๋ฆฝ์ ์ธ REST API ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ถํ ํ์ ์์ด ํ๋์ ํ๋ก์ ํธ๋ก ์์ ์ ํ๋ฉด์
React ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ธ ํด๋ผ์ด์ธํธ ์ธก์ ์ฝ๋๋ ์ ๋ถ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ
๋ฐฑ์๋ API ์ฝ๋์๋ ์ตํฉ์ด ๊ฐ๋ฅํ๋ค.
next ํ๋ก์ ํธ ๋ง๋๋ ๋ฐฉ๋ฒ
next ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ์ถ์ ํด๋์์ ์๋ ๋ช ๋ น์ด์น๊ณ ์ํฐ!
npx create-next-app
'Javascript > next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Next.js] ํ๋ก์ ํธ ๋ง๋ค์ด์ ์คํํด๋ณด๊ธฐ (0) | 2022.12.10 |
---|