[Next.js] next.js ์‹œ์ž‘ํ•˜๊ธฐ ( next.js๋ž€? / ์žฅ์  / ๋™์ž‘๊ณผ์ • / ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ )

2024. 8. 10. 18:39ยทFrontend/Next.js
728x90

๐Ÿ’ก next.js ์•Œ๊ฒŒ๋œ ๊ฒƒ

 - v8 ์—”์ง„ (๊ฒ€์ƒ‰ ์—”์ง„) ์„ ํ†ตํ•ด ๊ตฌ๊ธ€ ๋งต ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

 - ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” react ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 - SSR (server side randering)

 - ํ’€์Šคํƒ ํ”„๋ ˆ์ž„์›Œํฌ 

 - ์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

 

- ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ((react) : ๋‚ด๊ฐ€ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ˆ˜์ • ๊ฐ€๋Šฅ, ์›ํ•˜๋Š” ๋Œ€๋กœ ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ ๊ฐ€๋Šฅ 

- ํ”„๋ ˆ์ž„์›Œํฌ(vue) : ์ฝ”๋”ฉํ•˜๋Š”๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ์Œ

 

SSR์ด๋ž€ ?

 - ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋งŒ ๋ Œ๋”๋ง๋˜๋˜ ๋ถ€๋ถ„์„ ์„œ๋ฒ„์—์„œ๋„ ๋ Œ๋”๋งํ•˜์—ฌ ์™„์ „ํ•œ HTML ๋ฌธ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์ฆ‰, ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์š”์ฒญํ•ด์„œ ๋ฐ›์€ ๋‚ด์šฉ์„ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ํ‘œ์‹œํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ด๋‹ค. 

 

SSR์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ˜‘๋ ฅ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํ”„๋กœ์„ธ์Šค์ด๋‹ค. ์„œ๋ฒ„์—์„œ๋Š” ์ดˆ๊ธฐ ๋ Œ๋”๋ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์™„์„ฑ๋œ HTML์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ดํ›„์—๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก JS ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์–ด ๋™์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ ์ œ๊ณตํ•œ๋‹ค.

 

SSR ๋™์ž‘๊ณผ์ •

 

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 ๋ฒ„์ „์œผ๋กœ ๋‹ค์šด)

https://nodejs.org/en

 

Node.js — Run JavaScript Everywhere

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

//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 + ๋งํฌ ํด๋ฆญ ํ•˜๋ฉด ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚  ๊ฒƒ์ด๋‹ค.

 

728x90
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'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
'Frontend/Next.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Next.js] Next-Auth (Google)
  • [Next.js] css ๋ชจ๋“ˆ ์‚ฌ์šฉ / ๋ฐ์ดํ„ฐ ํŒจ์นญ (geStaticProps, getServerSideProps)
  • [Next.js] ๋ผ์šฐํŒ… / getStaticPaths & getStaticProps / userRouter Hook / Redirects & Rewrites
  • [Next.js] API ๋ผ์šฐํŠธ / ๋ฏธ๋“ค์›จ์–ด / CORS
hyeminyy
hyeminyy
Full Stack Developer | consistency
  • hyeminyy
    maemingu
    hyeminyy
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (78)
      • Backend (46)
        • Java (15)
        • JSP & Servlet (5)
        • EL & JSTL (3)
        • Spring (15)
        • DataBase (4)
        • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (4)
      • Frontend (11)
        • Next.js (5)
        • JavaScript (3)
        • Vue.js (3)
      • IT_STUDY (21)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)
        • SQLD (8)
        • ๊ฐœ์ธ๊ณต๋ถ€ (4)
      • Developer! (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • Github
    • Notion-portfolio
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ •์ฒ˜๊ธฐ ํ•„๊ธฐ ์š”์•ฝ
    httpServletRequest
    Next.js
    JSP
    ๊ฐœ๋ฐœ์ž
    ์ •์ฒ˜๊ธฐ ์š”์•ฝ
    sqld์ž๊ฒฉ์ฆ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    springboot
    springProject
    Servlet
    NextJS
    ๋ฐฑ์•ค๋“œ๊ฐœ๋ฐœ์ž
    el
    jstl
    ์ •์ฒ˜๊ธฐ
    ๋ฐฑ์•ค๋“œ
    SQL
    ๋ทฐ
    ์ •์ฒ˜๊ธฐ ์‹ค๊ธฐ
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ
    SQLD
    ํ”„๋ก ํŠธ์—”๋“œ
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ ์š”์•ฝ
    ์ •์ฒ˜๊ธฐ ์‹ค๊ธฐ ์š”์•ฝ
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    MVC
    Java
    Spring
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
hyeminyy
[Next.js] next.js ์‹œ์ž‘ํ•˜๊ธฐ ( next.js๋ž€? / ์žฅ์  / ๋™์ž‘๊ณผ์ • / ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ )
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”