Skip to content

CSR_SSR

sang-gyeong lee edited this page Nov 22, 2020 · 2 revisions

SPA์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝโœจ

๊ธฐ๋ณธ์ ์œผ๋กœ ์›น์€ client์™€ server๋กœ ๋‚˜์œ„์–ด์ ธ ์žˆ๋Š”๋ฐ client๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ์—ญํ• .
์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ณด๊ณ , ์ด ์š”์ฒญ์— ๋Œ€ํ•ด ์–ด๋–ค ์ •๋ณด๋ฅผ ์‘๋‹ตํ•ด์ค˜์•ผ ํ• ์ง€ ํŒ๋‹จํ•˜๊ณ , ์•Œ๋งž์€ html ๋ฌธ์„œ๋ฅผ ๋‚ด๋ ค์ค€๋‹ค.
๊ทธ๋Ÿผ client๋Š” ๊ทธ ์‘๋‹ต(html ๋ฌธ์„œ)์„ ๋ฐ”ํƒ•์œผ๋กœ DOM์— ๊ทธ๋ฆฐ๋‹ค.
์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  -> ์‘๋‹ต์„ ๋ฐ›๊ณ  -> ๊ทธ๋ฆฌ๊ณ ์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ!
(DOM์„ ๊ทธ๋ฆฌ๋ฉด์„œ css์ฒ˜๋ฆฌ + javascript๋ฅผ ๋กœ๋“œ)

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์›น์˜ ์„ฑ๋Šฅ์ด ๊ณ„์† ์ข‹์•„์ง€๊ณ  ๋‚ด๋ ค์ค˜์•ผํ•˜๋Š” ์ •๋ณด์˜ ์–‘์ด ๋งŽ์•„์ง€๊ฒŒ ๋˜์—ˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋“ฑ์žฅ ์ดํ›„๋กœ ์‚ฌ์šฉ์ž์™€์˜ ์ธํ„ฐ๋ž™์…˜๋„ ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ.
(staticํ•œ ์ •๋ณด๋งŒ์„ ๋ณด์—ฌ์ฃผ๋Š” ์›น์˜ ์ดˆ๊ธฐ ์—ญํ• ์„ ๋„˜์–ด์„ฌ)
๊ทธ๋Ÿฌ๋ฉด ์š”์ฒญ, ์‘๋‹ต ๊ณผ์ •์ด ๊ณ„์† ๋งŽ์•„์งˆ ๊ฒƒ.

๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ์„œ๋ฒ„์ž…์žฅ์—์„œ๋„ ์ˆ˜๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋‹ค๋ณด๋‹ˆ ์„œ๋ฒ„๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๊ณ ,
์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋„ ๊ณ„์†ํ•ด์„œ ํŽ˜์ด์ง€ ๊นœ๋นก์ž„์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค(์„œ๋ฒ„์—์„œ html์„ ์ƒˆ๋กœ ๋ฐ›์•„ ๊ทธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ)
๊ทธ ๋•Œ์ฏค์— Ajax๋ผ๋Š” ๊ธฐ์ˆ ์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ๋‹ค.

์œ ์ €๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ์ญ‰ ๋ณด๊ณ  ์žˆ๋‹ค๊ฐ€ ์–ด๋–ค ์ธํ„ฐ๋ž™์…˜์ด ์ผ์–ด๋‚˜๋ฉด ์ผ๋ถ€๋ถ„๋งŒ ์ •๋ณด๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„ํ•ด์ฃผ๊ณ  ์‹ถ์–ด
html์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ํŠน์ • ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ •๋ณด๋งŒ ๋ฐ”๊พธ์ž๋Š” ์ปจ์…‰์ด ์ƒ๊ฒจ๋‚œ ๊ฒƒ์ด๋‹ค!!


SPA์˜ ๋“ฑ์žฅ, CSR์˜ ์›๋ฆฌโœจ

๊ฐœ๋ฐœ์ž๋“ค์€ ์—ฌ๊ธฐ์„œ ๋งŒ์กฑํ•˜์ง€์•Š๊ณ  SPA๋ผ๋Š” ๊ฐœ๋…์„ ๋˜ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค.
url์„ ์›€์ง์ด๋”๋ผ๋„ html์„ ๋‹ค์‹œ ๋‚ด๋ ค์ฃผ๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒƒ!
๊ทธ๋ฆฌ๊ณ  ์ตํžˆ ์•Œ๊ณ ์žˆ๋Š” ๋ฆฌ์•กํŠธ๋ผ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” SPA๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์ง€์›ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  SPA๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ๋ฆฌ์•กํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

๋ณดํ†ต ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์€ ์„œ๋ฒ„์—์„œ ๋ฐ›์€ html์„ ๋ฐ”ํƒ•์œผ๋กœ Client๊ฐ€ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š”๋ฐ,
ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์€ ์„œ๋ฒ„์—์„œ ๋ฐ›๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๊ทธ๋ƒฅ ํด๋ผ์ด์–ธํŠธ์—์„œ ์•Œ์•„์„œ ํ™”๋ฉด์„ ๊ทธ๋ฆฐ๋‹ค!
๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ - ๋„คํŠธ์›Œํฌ ํƒญ์„ ํ™•์ธํ•˜๋ฉด url์„ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ์‘๋‹ต์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
server๊ฐ€ ์‘๋‹ตํ•˜๋Š” html์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋ฅผ ํ™•์ธํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ๋ณด๋‚ด์ฃผ๋Š” html์€ ๋น„์–ด์žˆ๋‹ค!

๋ฆฌ์•กํŠธ์—์„œ๋Š” ๋นŒ๋“œ๋ฅผ ํ•  ๋–„ ๋‚ด๊ฐ€ ์ง  ๋ชจ๋“  ๋ฆฌ์•กํŠธ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š”๋ฐ (babel๋กœ transpiling, webpack์œผ๋กœ bundling) ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ ์‚ฌ์ดํŠธ์— ๋“ค์–ด์™”์„๋•Œ server๋Š” ๋น„์–ด์žˆ๋Š” html์„ ์‘๋‹ตํ•ด๋ฒ„๋ฆฌ๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ bundle.js๋ฅผ ์ฝ๋Š”๋‹ค.
์ด ๋ฒˆ๋“ค๋ง๋œ ํŒŒ์ผ์„ ์ฝ๊ณ , DOM ํ™”๋ฉด์„ ๊ทธ๋ ค์ฃผ๊ฒŒ ๋˜๋Š” ๊ฒƒ!

๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌ๋œ nav ํ•ญ๋ชฉ์„ ํด๋ฆญํ• ๋•Œ๋งˆ๋‹ค url์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ
server๋Š” ์ƒˆ๋กœ์šด html์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  client์—์„œ ๋ณ€๊ฒฝ๋œ url์— ๋งž๋Š” ์ฝ”๋“œ๋ฅผ bundle.js์—์„œ ์ฐพ์•„ ๊ทธ๋ฆฐ๋‹ค.


CSR์˜ ์žฅ๋‹จ์ โœจ

  • ์žฅ์ 

-์•ฑ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. url์ด ๋ฐ”๋€Œ์–ด๋„ html์„ ๋‹ค์‹œ ๋‚ด๋ ค๋ฐ›์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ ์•Œ์•„์„œ ๊ทธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ.

  • ๋‹จ์ 

-์ฒซ ํ™”๋ฉด์˜ ๋กœ๋“œ์‹œ๊ฐ„์ด ๊ธธ๋‹ค.
: ์„œ๋น„์Šค์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์ ธ์„œ ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด์ž๋ฉด ๋ฒˆ๋“ค๋ง๋œ ํ•˜๋‚˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง„๋‹ค.
ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋กœ๋“œํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. ์ฆ‰, ์œ ์ €๊ฐ€ ์ฒซ ํ™”๋ฉด์„ ๋ณด๋Š” ์‹œ์ ์ด ๋„ˆ๋ฌด ๋Šฆ์–ด์ง„๋‹ค!

-SEO(๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”) ๋Œ€์‘์ด ํž˜๋“ค๋‹ค.
: ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰๋ด‡๋“ค์€ html์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์†Œ๋ฅผ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ๋นˆ html์„ ๋‚ด๋ ค์ฃผ๋Š” CSR์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ถˆ๋ฆฌํ•ด์ง„๋‹ค.

-> ์ด๋Ÿฐ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด CSR๊ณผ SSR์„ ํ•ฉ์น˜๋Š”๊ฒŒ ์–ด๋–จ๊นŒ ํ•˜๋Š” ์•„์ด๋””์–ด๊ฐ€ ๋‚˜์™”๊ณ , ์ด๋ฅผ ๋„์™€์ฃผ๋Š” ๊ฒŒ NextJS๋ผ๋Š” ๊ธฐ์ˆ ์ด๋‹ค:)



์ฐธ๊ณ ๋งํฌ
https://www.youtube.com/watch?v=C6uELkDh-60
https://d2.naver.com/helloworld/7804182

Clone this wiki locally