๐ก next.js ์๊ฒ๋ ๊ฒ
- v8 ์์ง (๊ฒ์ ์์ง) ์ ํตํด ๊ตฌ๊ธ ๋งต ๊ฐ๋ฐ ๊ฐ๋ฅ
- ์๋ฒ์ ํต์ ํ ์ ์๋ react ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- SSR (server side randering)
- ํ์คํ ํ๋ ์์ํฌ
- ์ฑ๊ธ ํ์ด์ง ์ดํ๋ฆฌ์ผ์ด์
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ((react) : ๋ด๊ฐ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ํจ์๋ฅผ ๊ฐ์ ธ๋ค ์ธ ์ ์๋ค. ์์ ๊ฐ๋ฅ, ์ํ๋ ๋๋ก ์ ์ฐํ๊ฒ ๋์ฒ ๊ฐ๋ฅ
- ํ๋ ์์ํฌ(vue) : ์ฝ๋ฉํ๋๋ฐ ํ๊ณ๊ฐ ์์
SSR์ด๋ ?
- ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ํด๋ผ์ด์ธํธ ์ธก์์๋ง ๋ ๋๋ง๋๋ ๋ถ๋ถ์ ์๋ฒ์์๋ ๋ ๋๋งํ์ฌ ์์ ํ HTML ๋ฌธ์๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ๋ ๊ธฐ์ ์ด๋ค. ์ฆ, ์๋ฒ๋ก ๋ถํฐ ์์ฒญํด์ ๋ฐ์ ๋ด์ฉ์ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ํ์ํด์ฃผ๋ ๊ธฐ์ ์ด๋ค.
SSR์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํ๋ ฅ์ผ๋ก ์ด๋ฃจ์ด์ง ํ๋ก์ธ์ค์ด๋ค. ์๋ฒ์์๋ ์ด๊ธฐ ๋ ๋๋ง์ ์ฒ๋ฆฌํ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์์ฑ๋ HTML์ ์ ๊ณตํจ์ผ๋ก์จ ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ ํ ์ ์๋ค. ์ดํ์๋ ํด๋ผ์ด์ธํธ ์ธก JS ์ฝ๋๊ฐ ์คํ๋์ด ๋์ ์ธ ์ํธ์์ฉ์ ์ ๊ณตํ๋ค.
SSR ๋์๊ณผ์
ํด๋ผ์ด์ธํธ ์์ฒญ
- ์ฌ์ฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๋ฉด ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ์ ์กํ๋ค.
์๋ฒ์์ ๋ฐ์ดํฐ ๋ก๋
- ์๋ฒ๋ ํด๋น ์์ฒญ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ค. ๋ฐ์ดํฐ๋ API ํธ์ถ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ๋ฑ์ ํตํด ๊ฐ์ ธ์ฌ ์ ์๋ค.
์ปดํฌ๋ํธ ๋ ๋๋ง
- ์๋ฒ๋ ๋ก๋ํ ๋ฐ์ดํฐ์ ํจ๊ป React ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ค. ์ด ๋, ์ปดํฌ๋ํธ๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง ์ต์ข HTML์ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ค.
์์ฑ๋ HTML ๋ฐํ
- ์๋ฒ๋ ์์ฑ๋ HTML์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํ๋ค. ์ด HTML์๋ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋ ์ํ์ ํ์ํ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋๋ค.
ํด๋ผ์ด์ธํธ ๋ ๋๋ง
- ํด๋ผ์ด์ธํธ๋ ๋ฐ์ HTML์ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋งํ๋ค. ์ดํ์๋ ํด๋ผ์ด์ธํธ ์ธก JS ์ฝ๋๊ฐ ์คํ๋์ด ํด๋น ํ์ด์ง์ ์ํธ์์ฉ์ด ๊ฐ๋ฅํด์ง๋ค.
- ํ์ด์ง๊ฐ ๋ก๋๋ ์ดํ์๋ ์ฌ์ฉ์์ ์ํธ์์ฉ์ ๋ฐ๋ผ ํด๋ผ์ด์ธํธ ์ธก์์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ ์์ฒญ์ด ๋ฐ์ํ๊ณ , ํ์ํ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ธ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง(CSR)๊ณผ ์ ์ฌํ๋ค.
SSR์ ์ฅ์
์ด๊ธฐ ๋ก๋ฉ ์๋ ๊ฐ์ | ์๋ฒ์์ ๋ ๋๋ง๋ ์์ ํ HTML ๋ฌธ์๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ๋ฏ๋ก, ์ฌ์ฉ์๋ ์ด๊ธฐ์ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ณผ ์ ์๋ค. ์ฌ์ฉ์๋ค์ ๋น ๋ฅธ ํ์ด์ง ๋ก๋ฉ์ ๊ฒฝํํ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ด ํฅ์๋๋ค. |
๊ฒ์ ์์ง ์ต์ ํ(SEO) | ์๋ฒ์์ ์์ ํ HTML ๋ฌธ์๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์์ง ํฌ๋กค๋ฌ๊ฐ ์ฝํ ์ธ ๋ฅผ ์ธ๋ฑ์ฑํ๋ ๋ฐ ์ฉ์ดํ๋ค. SSR์ ์ฌ์ฉํ๋ฉด ๊ฒ์ ์์ง์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝํ ์ธ ๋ฅผ ์ฝ๊ฒ ์ฐพ๊ณ ์ธ๋ฑ์ฑํ ์ ์๋ค. ์ด๋ก์จ ๊ฒ์ ๊ฒฐ๊ณผ ๋ ธ์ถ๋๋ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์์ฑ๊ณผ ์ ๋ฆฝ ๊ฒฝ๋ก๊ฐ ํฅ์๋๋ค. |
์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ | ์์ ๋ฏธ๋์ด ํ๋ซํผ์ URL์ ์คํฌ๋ฉํ์ฌ ํด๋น ํ์ด์ง์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์์ฑํ๋ค. SSR์ ์ฌ์ฉํ๋ฉด ์๋ฒ์์ ๋ ๋๋ง๋ HTML ๋ฌธ์๋ฅผ ์ ๊ณตํ๋ฏ๋ก, ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ์ ํํ๊ณ ํ๋ถํ ์ ๋ณด๋ฅผ ํฌํจํ ์ ์๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์ฑ์ ๊ณต์ ํ ๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ์ ํํ ํ์๋์ด ์ฌ์ฉ์๋ค์๊ฒ ๋์ฑ ๋งค๋ ฅ์ ์ธ ๋งํฌ๋ฅผ ์ ๊ณตํ ์ ์๋ค. |
๋ณด์ ๊ฐํ | ํด๋ผ์ด์ธํธ ์ธก ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ธ๋ถ๋ก ๋ ธ์ถ์ํค์ง ์๊ธฐ ๋๋ฌธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์์ ๊ฐํํ๋ ๋ฐ ๋์์ ์ค๋ค. |
๊ฐ๋ฐ ์ ์ฐ์ฑ | ์๋ฒ ์ธก์์ ๋ ๋๋ง๋๊ธฐ ๋๋ฌธ์ ์๋ฒ ์ธก์ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ํ๊ฒฝ์ ํ์ฉํ ์ ์๋ค. ์๋ฒ ์ฌ์ด๋์ ์ธ์ด๋ ํ๋ ์์ํฌ, ๋ฏธ๋ค์จ์ด ๋ฑ ๋ค์ํ ๊ธฐ์ ์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋ค. |
ํ๋ก์ ํธ ์์ฑํ๊ธฐ
์ฐ์ node.js๋ฅผ ๋ค์ด๋ฐ์์ค๋ค. (node.js 20.16.0 ๋ฒ์ ์ผ๋ก ๋ค์ด)
//Node ๋ฒ์ ํ์ธ
node -v
gitbash ๋๋ powershell์์ (cmd๋ ์ฌ์ฉํด๋ ์๊ด ์์ง๋ง ๊ฐ๊ธ์ ์ฌ์ฉํ์ง ๋ง๋ผ์ จ๋ค..์์ง) ์ฐ์ node ๋ฒ์ ํ์ธ
//๊ฒฝ๋ก ์ด๋
cd desktop
cd spharos-app
mkdir ๋ช ๋ น์ด ํตํด spharos-app ํ์ผ์ desktop์ ์์ฑํด์ฃผ๊ณ .. ์์ฑํ ํ์ผ ๊ฒฝ๋ก๋ก ์ด๋
npx create-next-app@latest .
์ฒ์ ์ ๋ช ๋ น์ด๋ฅผ ์ณค์ ๋, ์ค๋ฅ๊ฐ ๋์ ๋ญ๊ฐ ํ๋๋ฐ npm, npx ๋ช ๋ น์ด๋ฅผ ๋ฐ์๋ค์ฌ์ง์ง ์๋๋ค๊ณ ..... ์ฐพ์๋ธ ํด๊ฒฐ๋ฒ์
npm install -g npm@latest --์ต์ ๋ฒ์ ๋ค์ด ํ ์งํ ํ๋ฉด ๊ฐ๋ฅ
- latest ๋ ์ต์ ๋ฒ์ ์ ๋ค์ด ๋ฐ๋๋ค๋ ๋ป
์ค๋ฅ๊ฐ ๋๋ค๋ฉด ์ ์ฝ๋๋ฅผ ์ ๋ ฅ ํ, npx create-next-app@latest . ํด์ฃผ๋ฉด ๋๋ค.
vsCode์ ๋ค์ด๊ฐ๋ณด๋ฉด ์ด๋ ๊ฒ ํ์ผ์ด ์์ฑ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
public : static ํ์ผ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ, ์๋๋ cs, js, image, ๋ฑ์ด ๋ค์ด๊ฐ๋ ์๋ฆฌ ํ์ง๋ง ํ์ผ์ด ๋ง์ผ๋ฉด ๊ฐ๋ฐ์ ์ปดํจํฐ๋ ๊ด์ฐฎ์ง๋ง ์ ์ ์ปดํจํฐ์๋ ์ ์๋ณด์ / ํฐ ์ด์๊ฐ ์์ง์๋ ์ด์ ์ฌ์ฉ x
ํ๋ก์ ํธ๋ฅผ ์์ํด๋ณด๊ธฐ ์ํด
npm run dev
ํฐ๋ฏธ๋์์ ์ ๋ช ๋ น์ด๋ฅผ ๋๋ฌ๋ณด๋ฉด http://locallhost:3000 ์ด ๋ค์ด๊ฐ์ง๋ค. ctrl + ๋งํฌ ํด๋ฆญ ํ๋ฉด ํ๋ฉด์ด ๋ํ๋ ๊ฒ์ด๋ค.
'Frontend > Next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Next.js] Next-Auth (Google) (0) | 2024.08.20 |
---|---|
[Next.js] css ๋ชจ๋ ์ฌ์ฉ / ๋ฐ์ดํฐ ํจ์นญ (geStaticProps, getServerSideProps) (0) | 2024.08.20 |
[Next.js] ๋ผ์ฐํ / getStaticPaths & getStaticProps / userRouter Hook / Redirects & Rewrites (0) | 2024.08.19 |
[Next.js] API ๋ผ์ฐํธ / ๋ฏธ๋ค์จ์ด / CORS (0) | 2024.08.19 |