Front-End/Next.js

Next.js] Next.js๋ž€?

์™•๊ฐ€๐Ÿ‘ 2023. 8. 6. 20:24
728x90
๋ฐ˜์‘ํ˜•

next.js๋Š” React ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” ํ”„๋ ˆ์ž„ ์›Œํฌ์ž…๋‹ˆ๋‹ค.

์ˆœ์ˆ˜ React๋Š” ์˜คํžˆ๋ ค ์•ˆ ์“ฐ๊ณ , React์— Next.js๋ฅผ ์–น์–ด์„œ ์ฃผ๋กœ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•œ๋‹ค๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด Next.js๋ž€ ๋ฌด์—‡์ธ์ง€๋ถ€ํ„ฐ ํ•ด์„œ ๊ฐ™์ด ๊ณต๋ถ€๋ฅผ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•  ๋•Œ ๊ณ„์†ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ ๋Š” ์žˆ์ง€๋งŒ, ๋”ฑํžˆ ๊ณต๋ถ€๋ฅผ ํ•ด์„œ ์•Œ๊ณ ์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š”

๊ทธ๋•Œ๊ทธ๋•Œ ๋งž์ถฐ์„œ ์ฐพ์•„๋ณด๊ณ  ํ–ˆ๋˜ ํ„ฐ๋ผ ์ด๋ฒˆ๊ธฐํšŒ์— ์ •๋ฆฌํ•  ๊ฒธ ๊ณต๋ถ€ํ•  ๊ฒธ ๊ฒธ์‚ฌ๊ฒธ์‚ฌ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

Next.js๋ž€?

React๋กœ ๋งŒ๋“  ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR) ํ”„๋ ˆ์ž„ ์›Œํฌ์ž…๋‹ˆ๋‹ค. 

์ •ํ™•ํžˆ๋Š” SSG์— ๊ตฌ๋ถ„๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

CSR์ธ Reactํ™˜๊ฒฝ์—์„œ SSR๊ธฐ๋Šฅ์„ ๊ตฌ์‚ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค.

 

  • SSR์˜ ํŠน์ƒ‰์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋งŒ์•ฝ ๋ฆฌ์†Œ์Šค๊ฐ€ ํฐ ํŽ˜์ด์ง€๊ฐ€ ์žˆ๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•ด ๋†“๋Š” ๊ฒŒ ์ข‹๋‹ค๊ณ  ํŒ๋‹จ๋œ๋‹ค๋ฉด, SSR๋กœ ํŠน์ •ํŽ˜์ด์ง€๋งŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CSR์˜ ๋‹จ์ ์ธ SEO์— ์ทจ์•ฝํ•œ ์ ์„ ๋ณด์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SSR๋กœ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ฒ€์ƒ‰์—”์ง„์— ๋…ธ์ถœ์ด ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋กœ metaํƒœ๊ทธ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•˜์—ฌ SEO๋ฅผ ์šฉ์ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 


 

 

์ฃผ์š” ๊ธฐ๋Šฅ

  1. Hot reloading
    • ๊ฐœ๋ฐœ ์ค‘ ์ €์žฅ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒˆ๋กœ๊ณ ์นจ ํ•ด์ค๋‹ˆ๋‹ค.
  2. Automatic routing
    • pageํด๋”์— ์žˆ๋Š” ํŒŒ์ผ ์ด๋ฆ„์œผ๋กœ ๋ผ์šฐํŒ…์ด ๋ฉ๋‹ˆ๋‹ค. (13 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ํŒŒ์ผ ๊ตฌ์กฐ๊ฐ€ ์กฐ๊ธˆ ๋ฐ”๋€ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค..)
  3. Single file components
    • JSX, TSX ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€๋งŒ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๋Š” CSS๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. Global style
    • ํ”„๋กœ์ ํŠธ ์ „์ฒด CSSํŒŒ์ผ์ธ globals.css ํŒŒ์ผ์ด ์žˆ์œผ๋ฉฐ, _app.tsx์—์„œ ์ •์˜ํ•˜์—ฌ ์ „์ฒด๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. SSR
    • ๊ณ„์† ์–˜๊ธฐํ•˜๋Š” ์„œ๋ฒ„์‚ฌ์ด๋“œ๋ Œ๋”๋ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. Code splitting
    • dynamic import๋ฅผ ์ด์šฉํ•˜๋ฉด ์†์‰ฝ๊ฒŒ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
  7. ๋™์  ๋กœ๋“œ
    • ํด๋” ๊ตฌ์กฐ๋ฅผ pages/test/[id].tsx๋กœ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ๋™์ ์œผ๋กœ id๋ณ„๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Code splitting
webpack ๊ฐ™์€ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋ฅผ ์ด์šฉํ•ด์„œ ํ•˜๋‚˜์˜ ๋ฒˆ๋“คํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋ˆˆ ๋ฒˆ๋“ค์„ ์ด์ œ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ถˆ๋Ÿฌ์™€์„œ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

์ด๊ฑฐ ๋ง๊ณ ๋„ Next.js ํ†ตํ•ด ํ•  ์ˆ˜ ์žˆ๊ณ , ์„ค์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒŒ ๊ต‰์žฅํžˆ ๋งŽ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์›ฌ๋งŒํ•˜๋ฉด ํ•˜๋‚˜์”ฉ ๋‹ค ๊ณต๋ถ€ํ•ด ๋ณด๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ์•Œ๊ณ ๋งŒ ์žˆ๋Š” ์ชฝ์œผ๋กœ? ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
728x90