Skip to content

๐Ÿท๏ธ ์„ฑ์žฅ ํ”„๋ ˆ์ž„์›Œํฌ : ์ฃผ๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ๋„ค ๊ฐ€์ง€ ์งˆ๋ฌธ

Notifications You must be signed in to change notification settings

oiosu/Frontend_Challenge_Pre-Onboarding

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

12 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ‘ป ์„ฑ์žฅ์„ ์ด๋„๋Š” ํ”„๋ ˆ์ž„์›Œํฌ: ํ”„๋ก ํŠธ์—”๋“œ ์ฃผ๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ๋„ค ๊ฐ€์ง€ ์งˆ๋ฌธ

๐Ÿชผ '๋‚˜'๋Š” ์–ด๋–ค ์„ฑ๊ฒฉ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ธ๊ฐ€์š”?

image


๐Ÿชผ ๋ฌด์—‡์„ ์ข‹์•„ํ•˜๊ณ  ์‹ซ์–ดํ•˜๋‚˜์š”?

image

"์ผ๋‹จ ํ•ด๋ณด์ž" ๋ผ๋Š” ํƒœ๋„๋ฅผ ํ†ตํ•ด ์ด์ œ๊นŒ์ง€ ๋ฐฐ์› ๋˜ ๊ฐœ๋ฐœ ํ•™์Šต์„ ํ™œ์šฉํ•˜๊ณ ์ž ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๋”๋ผ๋„ ๋น ๋ฅด๊ฒŒ ์Šต๋“ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋„์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๊ฒฝํ—˜์„ ์Œ“๋Š” ๊ฒƒ์„ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ๋Š” 'figma'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””์ž์ธ์„ ๊ธฐํšํ•˜๊ณ , Django์™€ React๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๊ทธ๊ฒƒ์„ ๊ธฐํšŒ๋กœ ์‚ผ์•„ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •์„ ํ†ตํ•ด ๋ฐฐ์šฐ๊ณ  ์„ฑ์žฅํ•˜๋ฉฐ, ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ์— ์ž‘์„ฑํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ์ง€์‹์„ ๊ณต์œ ํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ธฐ์—ฌํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.


๐Ÿชผ ์ด๋ค„๋‚ด๊ณ  ์‹ถ์€ ๊ฒƒ์ด ์žˆ๋‚˜์š”? ์ •๋ง ํ•ด๊ฒฐํ•ด๋ณด๊ณ  ์‹ถ์€ ํ•˜๋‚˜์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

image

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋””์ž์ธ์„ ๊ฐœ์„ ํ•˜์—ฌ ์ง๊ด€์ ์ด๊ณ  ํšจ์œจ์ ์ธ ์‚ฌ์šฉ์ž์˜ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ณ  ์›น ํŽ˜์ด์ง€์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ๋ฐ˜์‘์„ฑ ์žˆ๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ๋ชฉํ‘œ๋กœ ํ”„๋กœํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์›น ์ ‘๊ทผ์„ฑ์„ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์›น/์•ฑ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ ‘๊ทผ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ธฐ์ˆ ์ ์ธ ํ•ด๊ฒฐ์ฑ…์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ณด๊ธ‰ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ทจ์•ฝ์ ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋ณด์™„ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.



๐Ÿ‘ป ์›ํ‹ฐ๋“œ ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ ์ฑŒ๋ฆฐ์ง€ - CSR / SSR with Next.js

๐Ÿ’ก CSR(Client-side Rendering)์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ๊ทธ๊ฒƒ์˜ ์žฅ๋‹จ์ ์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

CSR(Client-side Rendering) : ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹

CSR์€ SPA๋กœ ๋™์ž‘ํ•œ๋‹ค. (SPA(Single-Page Application) : ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜)

SPA๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ตœ์ดˆ ๋‹จ ํ•œ ๋ฒˆ๋งŒ ํŽ˜์ด์ง€ ์ „์ฒด(HTML, CSS, JS)๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ดํ›„ ํŠน์ • ๋ถ€๋ถ„๋งŒ Ajax๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ณ  ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฐฉ์‹ ์ฆ‰, ์ฒซ ์š”์ฒญ์‹œ ๋”ฑ ํ•œ๋ฒˆ๋งŒ ํŽ˜์ด์ง€๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์ด๋™ ์‹œ ๊ธฐ์กด ํŽ˜์ด์ง€์˜ ๋‚ด๋ถ€๋ฅผ ์ˆ˜์ •ํ•ด์„œ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. ex) React, Vue, Angular์™€ ๊ฐ™์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด SPA์˜ ๋ฐฉ์‹

  • CSR์€ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์‘๋‹ต๋ฐ›์•„ ๋ Œ๋”๋ง ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋‹จ์ผํŽ˜์ด์ง€(SPA)์™€ ๊ฐ™์ด ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.
  • CSR(Client-side Rendering)์˜ ๋™์ž‘๋ฐฉ์‹

    (1) ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•œ๋‹ค. > (2) ์„œ๋ฒ„๋Š” ์ดˆ๊ธฐ HTML ๋ฐ JSํŒŒ์ผ์„ ์ „์†กํ•œ๋‹ค.

    (3) ํด๋ผ์ด์–ธํŠธ๊ฐ€ JS๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋™์ ์œผ๋กœ ์ปจํ…์ธ ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    (4) ์ƒ์„ฑ๋œ ์ปจํ…์ธ ๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋œ๋‹ค.

CSR ์žฅ์  CSR ๋‹จ์ 
๋›ฐ์–ด๋‚œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) : ํŽ˜์ด์ง€ ๋กœ๋”ฉ ํ›„์—๋„ ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์— ๋Œ€ํ•œ ๋น ๋ฅธ ์‘๋‹ต์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ํ–ฅ์ƒ๋œ๋‹ค. SEO ๋ฌธ์ œ : ์ดˆ๊ธฐ HTML์—๋Š” ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ปจํ…์ธ ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๊ธฐ ๋–„๋ฌธ์— ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
์„œ๋ฒ„ ๋ถ€ํ•˜ ๊ฐ์†Œ : ์„œ๋ฒ„๋Š” ์ดˆ๊ธฐ ํŽ˜์ด์ง€๋ฅผ ์ „์†กํ•œ ํ›„์—๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ค„์–ด๋“ ๋‹ค. ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„ : ์ดˆ๊ธฐ HTML ๋ฐ JSํŒŒ์ผ์˜ ๋‹ค์šด๋กœ๋“œ์™€ ์‹คํ–‰์— ๋Œ€ํ•œ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค.
์บ์‹ฑ ๊ฐ€๋Šฅ : ์ดˆ๊ธฐ ํŽ˜์ด์ง€๋ฅผ ์ œ์™ธํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์ž์›์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋™์ ์œผ๋กœ ๋กœ๋“œ ๋˜๋ฏ€๋กœ ์บ์‹ฑ์ด ์šฉ์ดํ•˜๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ž์› ์‚ฌ์šฉ๋Ÿ‰ ์ฆ๊ฐ€ : ๋ชจ๋“  ๋ Œ๋”๋ง ์ž‘์—…์ด ํด๋ผ์ด์–ธํŠธ์—์„œ ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ ์ž์›(๋ฉ”๋ชจ๋ฆฌ, CPU๋“ฑ)์„ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’กSPA(Single Page Application)๋กœ ๊ตฌ์„ฑ๋œ ์›น ์•ฑ์—์„œ SSR(Server-side Rendering)์ด ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

SSR(Server-side Rendering)์„ ์‚ฌ์šฉํ•˜๋ฉด, ์‚ฌ์šฉ์ž๋Š” ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์™„์ „ํžˆ ๋ Œ๋”๋ง๋œ ํŽ˜์ด์ง€๋ฅผ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋จธ์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋กœ๋”ฉํ•˜๋Š” ๋™์•ˆ ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ณ  ์ƒํ˜ธ์ž‘์šฉ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

(1) SEO(Search Engine Optimization) ์ตœ์ ํ™”

๊ฒ€์ƒ‰ ์—”์ง„์€ ํŽ˜์ด์ง€์˜ ์ปจํ…์ธ ๋ฅผ ํฌ๋กค๋งํ•˜์—ฌ ์ธ๋ฑ์‹ฑํ•œ๋‹ค. SPA๋Š” ์ดˆ๊ธฐ์— ๋นˆ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ  ๊ทธ ํ›„ JS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…์ธ ๋ฅผ ๋™์ ์œผ๋กœ ๋ Œ๋”๋งํ•˜๋ฏ€๋กœ ๊ฒ€์ƒ‰ ์—”์ง„์€ ๋นˆ ํŽ˜์ด์ง€์—์„œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” SEO์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿค” ์–ด๋–ค ๋ถ€์ •์ ์ธ ์˜ํ–ฅ?

  1. ๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋Ÿฌ์˜ ์ดํ•ด ์–ด๋ ค์›€

์ผ๋ฐ˜์ ์ธ HTML ํŽ˜์ด์ง€์™€ ๋‹ฌ๋ฆฌ SPA๋Š” ์ดˆ๊ธฐ์— ๋นˆ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ  JS๋ฅผ ํ†ตํ•ด ๋™์ ์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ์ด๋Š” ๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋Ÿฌ๊ฐ€ ํŽ˜์ด์ง€์˜ ์ „์ฒด ์ฝ˜ํ…์ธ ๋ฅผ ์ธ์‹ํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์„ ์ค€๋‹ค.

  1. ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ

SPA์˜ ๊ฒฝ์šฐ, ๊ฒ€์ƒ‰ ์—”์ง„์ด ํŽ˜์ด์ง€์˜ ์ „์ฒด ์ฝ˜ํ…์ธ ๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ๋ฐ˜์˜๋˜๋Š” ์ฝ˜ํ…์ธ  ์–‘์ด ์ œํ•œ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์›น ์‚ฌ์ดํŠธ์˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ๋…ธ์ถœ ๋ฐ ์ˆœ์œ„์— ๋ถ€์ •์  ์˜ํ–ฅ์„ ์ค€๋‹ค.

  1. ํŽ˜์ด์ง€ ์ธ๋ฑ์‹ฑ์˜ ์ง€์—ฐ

SPA์—์„œ ์ดˆ๊ธฐ ๋นˆ ํŽ˜์ด์ง€๋งŒ ๋กœ๋“œ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ์—”์ง„์ด ์‹ค์ œ ์ฝ˜ํ…์ธ ๋ฅผ ์ธ์‹ํ•˜๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋Š” ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋‚˜ ์—…๋ฐ์ดํŠธ๋œ ์ฝ˜ํ…์ธ ๊ฐ€ ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ๋ฐ˜์˜๋˜๋Š” ์†๋„๋ฅผ ๋Šฆ์ถœ ์ˆ˜ ์žˆ๋‹ค.

  1. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์˜ ์ €ํ•˜

๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋Ÿฌ ์™ธ์—๋„ ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋Š” JS ๊ฐ€ ๋น„ํ™œ์„ฑ๋œ ์ƒํƒœ์—์„œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ SPA์—์„œ ์ œ๊ณตํ•˜๋Š” ๋™์ ์œผ๋กœ ๋ Œ๋”๋ง๋˜๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๋ณผ ์ˆ˜ ์—†์œผ๋ฉฐ ์ด๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. SPA์—์„œ๋Š” SEO๋ฅผ ๊ณ ๋ คํ•˜์—ฌ SSR ๋˜๋Š” Prerendering๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ์— ๋ Œ๋”๋ง๋˜๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๊ฒ€์ƒ‰ ์—”์ง„์ด ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

  • Prerendering
    : SPA(Single Page Application)์—์„œ ์‚ฌ์šฉ๋˜๋Š” SEO ์ตœ์ ํ™” ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜, ์›น ์„œ๋ฒ„ ๋˜๋Š” ์„œ๋น„์Šค์˜ ๋ฐฑ์—”๋“œ์—์„œ, ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜์—ฌ ์ •์  HTML ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •
    : SEO ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜)
(2) ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ๊ฐ„ ๊ฐ์†Œ

SPA๋Š” ์ดˆ๊ธฐ์— ํ•„์š”ํ•œ ์ž์›(HTML, JavaScript, CSS)์„ ๋ชจ๋‘ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

SSR์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ์ดˆ๊ธฐ ํŽ˜์ด์ง€ ์ƒํƒœ๋ฅผ ๋ Œ๋”๋งํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ปจํ…์ธ ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค ์ดํ›„ JS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿค” JS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ ์š”์†Œ ์˜ˆ์‹œ
: ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋ชจ๋‹ฌ ์ฐฝ์ด ์—ด๋ฆฌ๊ฑฐ๋‚˜ ํผ์ด ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.
: ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฃผ์‹ ์‹œ์„ธ๋ฅผ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค.
: ์š”์†Œ์˜ ์ด๋™, ํŽ˜์ธ๋“œ ์ธ/์•„์›ƒ, ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ๊ตฌํ˜„์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
: ํƒญ, ์•„์ฝ”๋””์–ธ, ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด ๋“ฑ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•  ๋•Œ๋งˆ๋‹ค ๋™์ ์œผ๋กœ ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

(3) ์†Œ์…œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ณต์œ 

์†Œ์…œ ๋ฏธ๋””์–ด ํ”Œ๋žซํผ์ด๋‚˜ ๋ฉ”์‹ ์ € ์•ฑ๊ณผ ๊ฐ™์€ ๊ณณ์—์„œ URL์„ ๊ณต์œ ํ•  ๋•Œ, ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

SPA์—์„œ๋Š” ์ดˆ๊ธฐ์— ๋นˆ ํŽ˜์ด์ง€๋งŒ ๋กœ๋“œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ์ œ๋Œ€๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค SSR์„ ์‚ฌ์šฉํ•˜๋ฉด ํŽ˜์ด์ง€์˜ ์ดˆ๊ธฐ ์ƒํƒœ๊ฐ€ ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง๋˜๋ฏ€๋กœ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ’ก Next.js ํ”„๋กœ์ ํŠธ์—์„œ yarn start(or npm run start) ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋ฅผ Next.js Github ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ฐพ์€ ๋’ค,

ํ•ด๋‹น ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ์ฒจ๋ถ€ํ•ด์ฃผ์„ธ์š”.

  • https://nextjs.org/docs/getting-started (Next.js ์„ธํŒ… ๊ฐ€์ด๋“œ)
  • https://github.com/vercel/next.js/ (Next.js Github ๋ ˆํฌ์ง€ํ† ๋ฆฌ)
  • _document.js, _app.js, getServerSideProps ๊ฐ™์€ ์š”์†Œ๋“ค์— ๋Œ€ํ•ด ์„ค๋ช…์„ ์š”๊ตฌํ•˜๋Š” ๊ณผ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค Next.js ์ฝ”๋“œ ๋ฒ ์ด์Šค ๋‚ด๋ถ€๋ฅผ ์‚ดํŽด๋ณด๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

About

๐Ÿท๏ธ ์„ฑ์žฅ ํ”„๋ ˆ์ž„์›Œํฌ : ์ฃผ๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ๋„ค ๊ฐ€์ง€ ์งˆ๋ฌธ

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published