๐Ÿ’ก CSR SSR / SPA MPA / ์ •์ ์›น ๋™์ ์›น

KHWยท2021๋…„ 8์›” 23์ผ
0

Javascript ์ง€์‹์Œ“๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
77/95
post-custom-banner

๐Ÿณ ์›น์‚ฌ์ดํŠธ ๋ถ„๋ฅ˜

๐Ÿด ์ •์ ์›น

๋ฐ˜๋ณต์ด๋‚˜ ๋ณ€ํ™”๊ฐ€ ์žฆ์ง€ ์•Š์€ ์‚ฌ์ดํŠธ์— ์‚ฌ์šฉํ•œ๋‹ค.
github.io , netlify ํ˜น์€ ์ •์ ์›น ์ƒ์„ฑํˆด์ธ Jekylle์—์„œ ์‚ฌ์šฉ
์„œ๋ฒ„์— ์ถ”๊ฐ€ ์ •๋ณด ์š”์ฒญํ•˜๋Š” ๊ฒƒ๋„ ์žˆ๋‹ค. (fetch๊ฐ™์€) => ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์š”์ฒญ์ด์ง€ DB์— ์š”์ฒญ์ด ์•„๋‹ˆ๋ผ
ex) ์ง„์—ด๋œ ์›นํŽ˜์ด์ง€๋ฅผ ๋“ค๊ณ ๊ฐ€๋Š” ํŽธ์˜์ 

๐Ÿด ๋™์ ์›น

๋””์ž์ธ ๋ ˆ์ด์•„์›ƒ์€ ๊ทธ๋Œ€๋กœ์ธ๋ฐ ์ถœ๋ ฅ๋˜๋Š” ์š”์†Œ๊ฐ€ ๊ณ„์† ๋ฐ”๋€Œ๋Š” ์›น์‚ฌ์ดํŠธ
์ƒˆ๋กœ๊ณ ์นจํ• ๋•Œ๋งˆ๋‹ค DB๋กœ๋ถ€ํ„ฐ ์ตœ์‹ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ
ex) ๊ทธ๋•Œ๊ทธ๋•Œ ์š”๋ฆฌํ•ด์ฃผ๋Š” ์‹๋‹น


๐Ÿณ ๋ Œ๋”๋ง ๋ฐฉ์‹

๐Ÿด CSR

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›น์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹
์ปดํฌ๋„ŒํŠธ ๋ชจ๋“ˆํ™”์™€ ๊ด€๋ จ => React, Vue, Angular์™€ ๊ด€๋ จ
JS์—์„œ ์กด์žฌํ•˜๋Š” ํƒœ๊ทธ ๊ด€๋ จ์„ ๊ฐ€์ ธ์™€์•ผ ๋ณด์ด๋ฏ€๋กœ ์ดˆ๊ธฐ ๋žœ๋”๋ง ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๊ณ  ๋Š๋‚€๋‹ค
html์— ๊ด€๋ จ ์ปจํ…์ธ ๊ฐ€ ์—†์–ด SEO๊ฐ€ ์•ˆ์ข‹๋‹ค.

๐Ÿด SSR

์„œ๋ฒ„์—์„œ html์„ ์กฐํ•ฉํ•ด html ํŒŒ์ผ ์ž์ฒด๋ฅผ ์‘๋‹ตํ•˜๋Š” ๋ฐฉ์‹
html์— ์žˆ๋Š” ํƒœ๊ทธ๋“ค์„ ๋ณด์—ฌ์ฃผ๋ฉด์„œ JS๋ฅผ ๋‹ค์šด๋ฐ›์•„ ๋™์ž‘์‹œํ‚ค๊ฒŒ ํ•˜๋Š” ํ˜•ํƒœ
๋ฏธ๋ฆฌ ํƒœ๊ทธ๋ฅผ ๋ณด์—ฌ์ฃผ์–ด ์ดˆ๊ธฐ ๋žœ๋”๋ง ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๊ณ  ๋Š๋‚€๋‹ค
html์— ๊ด€๋ จ ์ปจํ…์ธ ๊ฐ€ ์žˆ์–ด SEO๊ฐ€ ์ข‹๋‹ค


๐Ÿณ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ ๋ฐฉ์‹

๐Ÿด SPA

์›น์‚ฌ์ดํŠธ์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์ง€๋งŒ html์€ ๋‹จ ํ•˜๋‚˜๋ฟ์ธ ํ˜•ํƒœ
๋ฌผ๋ฆฌ์ ์œผ๋กœ ํŽ˜์ด์ง€๊ฐ€ ๋ฐ”๋€ ๊ฒŒ ์•„๋‹ˆ๋ผ JS๊ฐ€ dom์„ ์ˆ˜์ •ํ•ด์„œ ํŽ˜์ด์ง€๊ฐ€ ๋ฐ”๋€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค
ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ(์‚ฌ์‹ค์€ ์ด๋™ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฑฐ์ง€๋งŒ) ์„œ๋ฒ„ ์š”์ฒญ์ด ์•„์˜ˆ ์—†๋‹ค.

๐Ÿด MPA

๋ฌผ๋ฆฌ์ ์œผ๋กœ ํŽ˜์ด์ง€๋งˆ๋‹ค ํŒŒ์ผ์ด ๊ฐ๊ฐ ์กด์žฌํ•˜๋Š” ํ˜•ํƒœ


๐Ÿณ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ 

  • SPA๋Š” CSR, MPA๋Š” SSR๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ์‰ฌ์šด๋ฐ 100% ๊ทธ๋ ‡์ง€๋Š” ์•Š๋‹ค.
  • SPA๋„ SSR์ด ๋  ์ˆ˜ ์žˆ๋‹ค. => html๊ณผ js๊ฐ€ ์žˆ๋Š” ์ดˆ๊ธฐ์ƒํƒœ๋Š” SSR ํ˜•ํƒœ์—์„œ ์–ด๋–ค ๋™์ž‘๋“ค์ด ์ˆ˜ํ–‰๋˜๊ณ  ๊ทธ ํ›„์— CSR์„ ํ•˜๋ฉด SPA๊ฐ€ ์—ฌ์ „ํžˆ ์œ ์ง€๊ฐ€ ๋œ๋‹ค.
  • MPA๋„ CSR์ด ๋  ์ˆ˜ ์žˆ๋‹ค. => ์ปดํฌ๋„ŒํŠธ ๋ชจ๋“ˆ๋กœ ์™€์„œ CSRํ–ˆ๋Š”๋ฐ aํƒœ๊ทธ ์“ฐ๋ฉด ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋กœ ๋™์ž‘ํ•˜๋Š” MPA๊ฐ€ ๋˜๊ฒ ์ง€
  • ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์˜ ๊ฒฝ์šฐ CSR๊ณผ SSR ๋‘˜๋‹ค ๋ธŒ๋ผ์šฐ์ €์— ๋ณด์ด๊ฒŒ ํ•ด์•ผํ•˜๋ฏ€๋กœ ์ „๋ถ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • SSR์€ ์›น ์„œ๋ฒ„์—์„œ ์–ด๋Š์ •๋„ ์™„์„ฑ๋œ HTML์„ ์ œ์ž‘ํ•˜์—ฌ ๋กœ๋”ฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. => ๋ธŒ๋ผ์šฐ์ € ๋žœ๋”๋ง์ด SSR์—๋„ ์กด์žฌํ•œ๋‹ค.
  • ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ์กด์— html css js ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ CSR์ด๋‹ค.
    ์„œ๋ฒ„์—์„œ ์›ฌ๋งŒํผ์˜ HTML์„ ๋ Œ๋”๋งํ•˜๋Š” Django๊ฒƒ์ด SSR๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ ํŒ๋‹จ๋œ๋‹ค.

๐Ÿณ ์ •๋ฆฌ

๐Ÿด SSR์€ SPA๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ๊ฐ€? => X

SSR๋งŒ ๊ฐ€์ง€๊ณ  SPA๋Š” ๊ตฌํ˜„์€ ๋ชปํ•˜๋‚˜ SSR์„ ํ†ตํ•ด SPA๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์ดํ›„๋Š” CSR์„ ์“ด๋‹ค๋ฉด SPA๋Š” SSR์ด ๊ฐ€๋Šฅํ•˜๋Š” ์˜๋ฏธ๊ฐ€ ์„ฑ๋ฆฝํ•œ๋‹ค.

๐Ÿด MPA์™€ SPA๋Š” ๋ฌด์—‡์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š”๊ฐ€? => ์ฒ˜์Œ ์ดํ›„ ๋ฐ›์•„์˜ค๋Š” ๋Œ€์ƒ์—๋”ฐ๋ผ

MPA์™€ SPA์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ์ฒ˜์Œ ์ดํ›„์˜ ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ’์ด API๋ฅผ ํ†ตํ•œ JSON์ด๋ผ๋ฉด SPA์ด๊ณ  Index.html๊ณผ ๊ฐ™๋‹ค๋ฉด MPA์ด๋‹ค.

๐Ÿด CSR๊ณผ SSR์€ ๋ฌด์—‡์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š”๊ฐ€? => SEO๊ฐ€ ๋‚ฎ๋ƒ ๋†’๋ƒ => index.html์ด ํ…… ๋น„์–ด์žˆ๋ƒ ์ด๋ฏธ ์Œ“์—ฌ์žˆ๋ƒ => ์ปดํฌ๋„ŒํŠธ ๋ฐฉ์‹์ด๋ƒ ์•„๋‹ˆ๋ƒ

Node.js์—์„œ
1) index.html์—์„œ js๋ฅผ ์ปดํฌ๋„ŒํŠธ ๋ฐฉ์‹์œผ๋กœ ํ•ด์„œ index.html์—์„œ๋Š” ํ•„์š”ํ•œ ํƒœ๊ทธ๊ฐ€ ์—†์œผ๋ฉด ์ด๋Š” SEO๊ฐ€ ๋‚ฎ์€ CSR๋ฐฉ์‹์ด๊ณ 
2) index.html์—์„œ js๋ฅผ index.html ํƒœ๊ทธ๊ฐ€ ์žˆ์„๊ฑด ๋‹ค์žˆ๊ณ  js๋ฅผ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์€ index.html์— ํ•„์š”ํ•œ ํƒœ๊ทธ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ด๋Š” SEO๊ฐ€ ๋†’์€ SSR๋ฐฉ์‹์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค ์ƒ๊ฐ๋œ๋‹ค.


๐Ÿณ CSR ์˜ˆ์‹œ

์‚ฌ์ดํŠธ

๐Ÿด ํ•ด๋‹น ๋„คํŠธ์›Œํฌ HTML ๋ถ€๋ถ„

  • CONTAINER.HTML
  • Enqz_20U.html
  • runner.html

์ „๋ถ€ BODYํƒœ๊ทธ์— ๋”ฐ๋กœ ๋‚ด์šฉ์ด ์กด์žฌํ•˜์ง€์•Š๋Š”๋‹ค.
์ด๋ฅผ ๊ฐ€์ ธ์™€์„œ Clinet์—์„œ ๋ Œ๋”๋ง์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ธ CSR ๋ฐฉ์‹์ด๋‹ค.


๐Ÿณ ๊ธ€์”จ๋กœ ์ •๋ฆฌ ๋ถ€๋ถ„

๐Ÿด CSR

๐Ÿด SSR

๐Ÿด SSG


๐Ÿณ ์ถœ์ฒ˜

SSR CSR

profile
๋‚˜์˜ ํ•˜๋ฃจ๋ฅผ ๊ฐ€๋Šฅํ•œ ๊ธฐ์–ตํ•˜๊ณ  ์ฆ๊ธฐ๊ณ  ํ›„ํšŒํ•˜์ง€๋ง์ž
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€