์์ฑ์ : ์ ์ฐฌ๋ฏผ
ํ๋ฉด์ ํ์ํ ์น ํ์ด์ง๋ฅผ ๋ง๋๋ ๊ณผ์
- HTML์ ๊ตฌ์กฐ๋ณ๋ก ๋ถ๋ฅํ์ฌ, DOM ๊ฐ์ฒด๋ฅผ ์์ฑ
- CSS๋ฅผ ๊ตฌ์กฐ๋ณ๋ก ๋ถ๋ฅํ์ฌ, ์คํ์ผ ๊ท์น ์์ฑ
- DOM ๊ฐ์ฒด, ์คํ์ผ ๊ท์น์ ํฉ์ณ ํ๋ฉด(๋๋ํธ๋ฆฌ) ์์ฑ
- ๋๋ํธ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ ์ด์์ ๋ฐฐ์น, ์คํ์ผ ์์
- Loader๊ฐ ์๋ฒ๋ก๋ถํฐ HTML์ ๋ถ๋ฌ์ด
- HTML์ ๋ถ๋ฅ(Phasing)ํ์ฌ DOMํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
- CSSํ์ผ๊ณผ ์คํ์ผ ์์๋ฅผ ๋ถ๋ฅํ์ฌ CSSOMํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
- DOMํธ๋ฆฌ์ CSSOM์ ๊ฒฐํฉํ์ฌ ๋๋๋งํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
- ๋๋๋งํธ๋ฆฌ์ ์์๋ค์ ํฌ๊ธฐ์ ์์น๋ฅผ ๊ณ์ฐํ๋ค.
- ๊ณ์ฐ๋ ํฌ๊ธฐ์ ์์น์ ๋ง๊ฒ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
๋จ์ผ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งํ๋ค. SPA๊ฐ ๋ฑ์ฅํ๊ธฐ ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ธ ์๋ฒ ์ฌ์ด๋ ๋๋๋ง (SSR)์ ๊ฒฝ์ฐ, ํ๋ฉด์ ๋ณด์ฌ์ง ๋ฆฌ์์ค๋ฅผ ์๋ฒ๋ก ์์ฒญํ๊ณ , ์๋ฒ๋ก๋ถํฐ ๋ฐ์์จ ๋ฆฌ์์ค๋ฅผ ๋ ๋๋ง ํ๋ค.
ํ์ง๋ง SPA์ ๊ฒฝ์ฐ ๋๋๋ง์ ์ญํ ์ ์๋ฒ์๊ฒ ๋๊ธฐ์ง ์๊ณ ๋ธ๋ผ์ฐ์ ์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ชจ๋ ์ ์ ๋ฆฌ์์ค๋ฅผ ์ต์ด์ ํ๋ฒ ๋ค์ด๋ก๋ํ๊ณ , ์ดํ ์๋ก์ด ํ์ด์ง ์์ฒญ ์ ํ์ด์ง ๊ฐฑ์ ์ ํ์ํ ๋ฐ์ดํฐ๋ง์ ์ ๋ฌ๋ฐ์ ํ์ด์ง๋ฅผ ๊ฐฑ์ ํ๋ค.
- ์๋ก์ด ํ์ด์ง ์์ฒญ ์ ์ ์ฒด๋ฅผ ๋๋๋งํ์ง ์๊ณ ๋ณ๊ฒฝ๋๋ ๋ถ๋ถ๋ง ๊ฐฑ์ ํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด์ ์ธ ํธ๋ํฝ ๊ฐ์์ ๋๋๋ง์์ ์ข์ ํจ์จ์ ๊ฐ์ง๋ค.
- ์๋กญ๊ฒ ๊ฐฑ์ ๋๋ ๋ถ๋ถ๋ง ๋๋๋งํ๊ธฐ ๋๋ฌธ์ ์๋ก๊ณ ์นจ์ด ๋ฐ์ํ์ง ์์ ํ๋ฉด๊น๋นก์ ์์ด ๋น ๋ฅธํ๋ฉด ์ด๋์ด ๊ฐ๋ฅํ๋ค.
- ํธ๋ํฝ์ ๊ฐ์์ ์๋, ๋ฐ์์ฑ์ ํฅ์์ผ๋ก ์ธํด ์ฑ์ฒ๋ผ ์์ฐ์ค๋ฌ์ด ์ฌ์ฉ์๊ฒฝํ(UX)๋ฅผ ์ ๊ณตํ๋ฉฐ ๋ชจ๋ฐ์ผ ์ฌ์ฉ์ด ์ฆ๊ฐํ๋ ์์ ์ ์ด๋ ํฐ ์ฅ์ ์ด ๋๋ค.
- ๋ชจ๋ํ ๋๋ ์ปดํฌ๋ํธ๋ณ ๊ฐ๋ฐ์ด ์ฉ์ดํ๋ค.
- ๋ฐฑ์๋์ ํ๋ก ํธ์๋๊ฐ ๋น๊ต์ ๋ช ํํ๊ฒ ๊ตฌ๋ถ๋๋ค.
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ์ ์ ๋ฆฌ์์ค๋ฅผ ํ๋ฒ์ ๋ค์ด๋ก๋ ํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ๊ตฌ๋์๋๊ฐ ๋๋ฆฌ๋ค.
- SPA ๊ตฌ์กฐ ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํด๋ผ์ด์ธํธ์์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ํด๋น ๋ก์ง๋ค์ JavaScript๋ฅผ ํตํด ๊ตฌํ๋๋ฏ๋ก ์ฝ๋๊ฐ ์ธ๋ถ์ ๋ ธ์ถ๋๋ ๋ณด์์ ์ธ ๋ฌธ์ ๊ฐ ์๋ค.
- ๊ฒ์์์ง ์ต์ ํ (SEO)๊ฐ ์ด๋ ต๋ค.
๊ฒ์์์ง์ด ํฌ๋กค๋ง ํ ๋ JavaScript๋ฅผ ์คํํ์ง ์๊ณ ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋ก๋๋๊ธฐ ์ ์ ๋น ์ํ์ ์ฝ๋๋ฅผ ํฌ๋กค๋งํ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ฑ์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์๋๋ค.
์์ฒ๋ผ SPA๋ฅผ ์ฌ์ฉํ๋ฉด UX์ ํฅ์๊ณผ ๋ ๋๋ง์ ์ฅ์ ๋ ์์ง๋ง ๊ฒ์์์ง ์ต์ ํ์ ๋จ์ ๋ํ ์กด์ฌํ๋ค. SPA๋ ์ ๋ณด์ ์ ๊ณต์ ์ํ ์นํ์ด์ง๋ณด๋ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ ๊ธฐ์ ์ด๋ฏ๋ก ํ์ด์ง์ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ฐฉ์์ ์ ํํ๋๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค.
๐กSSR๊ณผ CSR ๊ฐ๋
์ ๋ฆฌ
SSR : ์ฌ์ฉ์๊ฐ ์น ํ์ด์ง์ ์ ์ํ์ ๋ ์๋ฒ๊ฐ ์ฌ์ฉ์์๊ฒ ๋๋๋ง ๋ HTML์ ์๋ตํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ๋ก ๋๋๋ง ํ ์ ์๊ฒํ๋ค. ๊ทธ ํ CSR๊ณผ ๋์ผํ๊ฒ ์๋ฐ์คํฌ๋ฆผํธ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ๊ณ ์คํํ๋ค.
CSR : ์ฌ์ฉ์๊ฐ ์น ํ์ด์ง์ ๋ค์ด์์ ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ ํด์ํ ํ ๋๋๋งํ๋ค.
์ ํต์ ์ธ ์น ๋ฐฉ์์ธ SSR(์๋ฒ ์ฌ์ด๋ ๋๋๋ง)์ ์ด SPA ๋ฐฉ์์ ๋นํด ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ณด์๋ค. ์์ฒญ ์ ๋ง๋ค ์๋ก๊ณ ์นจ์ด ์ผ์ด๋๋ฉฐ ํ์ด์ง๋ฅผ ๋ก๋ฉํ ๋ ๋ง๋ค ์๋ฒ๋ก๋ถํฐ ๋ฆฌ์์ค๋ฅผ ์ ๋ฌ๋ฐ์ ํด์ํ๊ณ ํ๋ฉด์ ๋ ๋๋งํ๋ ๋ฐฉ์์ด์๊ธฐ ๋๋ฌธ์ด๋ค.
SPA๋ ํธ๋ํฝ์ ๊ฐ์์ํค๊ณ ์ฌ์ฉ์์๊ฒ ๋ ๋์ ๊ฒฝํ์ ์ ๊ณตํ๋ค. ์๋ฒ๋ ๋จ์ง JSON ํ์ผ๋ง ๋ณด๋ด์ฃผ๋ ์ญํ ์ ํ๊ณ , HTML์ ๊ทธ๋ฆฌ๋ ์ญํ ์ ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ํํ๊ฒ ๋ ๊ฒ์ด๋ค. ๋ฐ๋ก ์ด๊ฒ์ด CRS(ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋๋๋ง)์ด๋ค.
ํด๋ผ์ด์ธํธ ์ชฝ์ด ์ ์ ๋ฌด๊ฑฐ์์ง์ ์ด์ ๋ฐ๋๋ก View๋ง ๊ด๋ฆฌํ์๋ ์ฒ ํ์ผ๋ก React๊ฐ ๋ฑ์ฅํ๋ค.
์ด๋ ๊ฒ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋๋๋ง๊ณผ ์๋ฒ ์ฌ์ด๋ ๋๋๋ง์ ์๋ฆฌ์ธ์์ด ์์๋ ๊ฒ์ด๋ค.
์์ ๊ทธ๋ฆผ์ ์ ํต์ ์ธ ๋ฐฉ์์ธ SSR์ ํํํ ๊ฒ์ด๋ค.
ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด ๊ทธ๋ฆผ์ ์์๋๋ก
๋ธ๋ผ์ฐ์
=> ํ๋ก ํธ์๋ฒ
=> ๋ฐฑ์๋์๋ฒ
=> ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋ฅผ ๊ฑฐ์ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ํ ๋ค์ ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํฐ๊ฐ ๊ทธ๋ ค์ง๋ ํ์์ด๋ค.
์ด ๋ฐฉ์์ ์๋ฒ์์ ๋ฐ์ดํฐ๊น์ง ๋ชจ๋ ํฌํจํ์ฌ ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ ํ ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌํ๋๋ฐ ํด๋ผ์ด์ธํธ๊ฐ ํ์ด์ฆ๋ฅผ ์ด๋ํ๋ค๋ ๊ฐ, ํด๋ฆญ์ผ๋ก ์ธํ ๋ค๋ฅธ ์์ฒญ์ด ์๊ธธ๋๋ง๋ค ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ ํ๋ฉด์์ ๋ฐ๋์ง ์์๋ ๋๋ ๋ถ๋ถ๋ ๊ณ์ํด์ ๋ค์ ๋ ๋๋ง๋๋ ๋จ์ ์ด ์๋ค. ์ด๋ ๊ณง ์๋ฒ ๋ถํ ๋ฑ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ค.
CSR์ react, vue ๋ฑ์ SPA์์ ์ฐ์ด๋ ๊ธฐ๋ฒ์ผ๋ก, ์๋ฒ์์ ํ๋ฉด์ ๊ตฌ์ฑํ๋ SSR๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ ํด๋ผ์ด์ธํธ์์ ํ๋ฉด์ ๊ตฌ์ฑํ๋ค.
SPA์ ๊ฒฝ์ฐ ์ฒซ ํ๋ฉด์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด, ๊ทธ๋ฆผ1๋ฒ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์ฝ๋๋ค์ด ํ๋ก ํธ ์๋ฒ์์ ๋ค์ด๋ฐ์ ์ง๋ค.
ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์ฝ๋๋ ๋ค์ด ๋ฐ์์ง๋ง ์์ง ๋ฐ์ดํฐ๋ฅผ ๋ค์ด ๋ฐ์ ์ํ๊ฐ ์๋๋ค.
CSR์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ฐ์ํ๋ฉด ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฐฑ์๋ ์๋ฒ์ ์์ฒญํ์ฌ ๋ฐ์ดํฐ๋ง ๋ฐ์์จ๋ค.
CSR์ ์ด๊ธฐ ์ง์ ์๋๊ฐ ๋๋ฆฐ ๋ฐ๋ฉด, ๊ทธ ํ๋ก ํ์ํ ๋ฐ์ดํฐ๋ง ๊ฐฑ์ ํ๋ฉด ๋๊ธฐ๋๋ฌธ์ SSR๋ฐฉ์์ ๋นํด ์๋ฒ๋ถํ๊ฐ ๋ํ๋ค๋ ์ฅ์ ์ด ์๋ค. ํ์ง๋ง ์ด๊ธฐ HTML์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ณด๋ ๊ฒ์ ๋ด์ด ํด๋นํ์ด์ง๋ฅผ ๋น ํ์ด์ง๋ก ์ฐฉ๊ฐํ์ฌ CEO ๊ฒ์์์ง ์ต์ ํ์ ์ทจ์ฝํ ์ ์๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋๋๋ง์ ๊ฒฝ์ฐ, ์ฌ์ฉ์์ ํ๋์ ๋ฐ๋ผ ํ์ํ ๋ถ๋ถ๋ง ๋ค์ ์ฝ์ด๋ค์ด๊ธฐ ๋๋ฌธ์ ์๋ฒ ์ธก์์ ๋๋๋งํ์ฌ ์ ์ฒดํ์ด์ง๋ฅผ ๋ค์ ์ฝ์ด๋ค์ด๋ ๊ฑฐ๋ณด๋ค ๋น ๋ฅธ ์ธํฐ๋์
์ ๊ธฐ๋ํ ์ ์๋ค. ์๋ฒ ์ฌ์ด๋ ๋๋๋ง์ ํ๋ค ํ๋๋ผ๋ Ajax๊ธฐ๋ฅ์ ์ํด ํด๋ผ์ด์ธํธ ๋๋๋ง ์์๊ฐ ํฌํจ๋ ์ ๋ฐ์ ์๋ค. ์ด๋ฌํ ์ ์ผ๋ก ๋ฏธ๋ฃจ์ด๋ณด์ ํด๋ผ์ด์ธํธ ์ธก์์ ๋๋๋ง์ ํ๊ฒ๋๋ฉด ์๋ฒ ์ฌ์ด๋ ๋๋๋ง์ด ๋ฐ๋ก ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ผ๊ด์ฑ์๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
ํ์ง๋ง ๋ฌธ์ ์ ๋ ์๋๋ฐ, ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋๋๋ง์ ํ์ด์ง๋ฅผ ์ฝ์ด๋ค์ด๋ ์๊ฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ด๋ค์ด๋ ์๊ฐ, ๊ทธ๋ฆฌ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์๊ฐ๊น์ง ๋ชจ๋ ๋ง์ณ์ผ ์ฝํ ์ธ ๊ฐ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ค. ์ฌ๊ธฐ์ ์น ์๋ฒ์ ์ฝํ ์ธ ๋ฐ์ดํฐ๋ผ๋ ๊ฐ์ ธ์์ผ ํ๋ค๋ฉด ๊ทธ ์๊ฐ์ ๋์ฑ ๊ธธ์ด์ง ์ ๋ฐ์ ์๋ค. ์ฆ, ์ด๊ธฐ ๊ตฌ๋์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ์ด๊ธฐ ๊ตฌ๋์๋๋ฅผ ์ ์ธํ๋ฉด ๊ทธ ๋ค์๋ถํฐ๋ ๋น ๋ฅธ ์ธํฐ๋์ ์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ๋ณด๋ฉด ์น๋ช ์ ์ด๋ผ๊ณ ํ ์์๋ ๊ฒ์ ์์ง ์ต์ ํ์ ๋ฌธ์ ๊ฐ ์กด์ฌํ๋ค. ๋๋ถ๋ถ์ ์น ํฌ๋กค๋ฌ, ๋ด๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์คํ์ํค์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค. ๋๋ฌธ์ HTML์์๋ง ์ฝํ ์ธ ๋ฅผ ์์งํ๊ฒ ๋๊ณ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง๋๋ ํ์ด์ง๋ฅผ ๋น ํ์ด์ง๋ก ์ธ์ํ๊ฒ ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ๋ณด์๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๊ธฐ์กด์ ์๋ฒ ์ฌ์ด๋ ๋๋๋ง์์๋ ์ฌ์ฉ์์ ๋ํ ์ ๋ณด๋ฅผ ์๋ฒ ์ธก์์ ์ธ์ ์ผ๋ก ๊ด๋ฆฌ๋ฅผ ํ๋ค. ๊ทธ๋ฌ๋ ํด๋ผ์ด์ธํธ ์ธก์๋ ์ฟ ํค๋ง๊ณ ๋ ์ฌ์ฉ์์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ด ๋ง๋ ์น ์๋ค.
์๋ฒ์ฌ์ด๋ ๋๋๋ง์ ์ฅ์ ์ ๋ฐ๋์ ๊ฒฝ์ฐ๋ก ์๊ฐํ๋ฉด ์ฝ๋ค. ์ ์ ๊ฐ ์ฒ์์ผ๋ก ์ปจํ ์ธ ๋ฅผ ์ ํ๊ฒ ๋๋ ์์ ์ ๋น๊ธธ ์ ์๊ณ , ์๋ฒ๋ฐ๋ก, ํด๋ผ์ด์ธํธ ๋ฐ๋ก ์์ฑํ๋ ์ฝ๋๊ฐ ํ๋๋ก ํฉ์ณ์ง๋ค. ๋ฌผ๋ก SEO ์ ์ฉ๋ ๋ฌธ์ ์๋ค. ๋ฌธ์ ์ ์ ์ฌ์ฉ์์ ์ธํฐ๋ ์ ํ๋ ๋ถ๋ถ์ผ ๊ฒ์ด๋ค. ๋งค๋ฒ ์๋ฒ์ request ์์ฒญ์ ํตํด์ ํด๊ฒฐํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. DOM ์กฐ์์ ์์ด์๋ ์์ฒญํ๋ ๊ณผ์ ๊ณผ ์์ฒญ๋ ํ์๋น์ฉ์ผ๋ก ์ ๋ฅผ ๋จน๊ณ ์๋ค. React๊ฐ ์ด ๋ถ๋ถ์ ์์ด์ ๋ง์ ํด๊ฒฐ์ฑ ์ ์ ์ํ์ง๋ง ์ด๋ ๋๊ณ ๋ด์ผ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ ์์๊ฒ์ด๋ค.
SSR | CSR | |
---|---|---|
์ด๊ธฐ๋ก๋ฉ์๋ | CSR์ ๋นํด ๋ค์ด ๋ฐ๋ ํ์ผ์ด ๋ง์ง๊ฐ ์์ ์๋๊ฐ ๋น ๋ฅด๋ค. | ๋ชจ๋ JSํ์ผ์ ๋ค์ด ๋ฐ์์์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ์๋ ์ค๋ ๊ฑธ๋ฆฐ๋ค. |
์๋ฒ ๋ถ๋ด | ์๋ฒ์ ์ฆ์ ์๋ต(view ๋ณ๊ฒฝ์ ๋ง๋ค)์ ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ถ๋ด์ด ๋๋ค. | data ์์ฒญ์ด ์์๋๋ง ์๋ฒ์ ์์ฒญํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ถ๋ด์ด ์ ๋ค. |
SEO(Search Engine Optimization) | HTML์ ๋ํ ์ ๋ณด๊ฐ ์ฒ์์ ํฌํจ๋์ด ์์ด ๋ฐ์ดํฐ๋ฅผ ์์งํ ์ ์๋ค. | ๋งจ ์ฒ์ HTMLํ์ผ์ด ๋น์ด์์ด, ํฌ๋กค๋ฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์งํ ์ ์๋ค.(๋จ ๊ตฌ๊ธ ์ ์ธ) |
Next.js๋ React์ SSR์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ฒ ๋์์ฃผ๋ ๊ฐ๋จํ ํ๋ ์์ํฌ์ด๋ค. React๋ SSR์ ๊ณ ๋ คํ์ฌ ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ ์์ฒด์ ์ผ๋ก๋ ๊ตฌํ์ด ๊ฐ๋ฅํ๊ธด ํ์ง๋ง, ๊ฐ๋ฐํ๊ฒฝ์ ๋ง๋ค๊ธฐ ์ํด์๋ ์๊ฐ๋ณด๋ค ๋ณต์กํ๋ค. ๊ทธ๋์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ Next.js๊ฐ ๋์๊ณ ์ฌ์ฉ๋ฒ๋ ๊ฝค ๊ฐํธํ๋ค.
๊ณผ๊ฑฐ์ ์น์ฌ์ดํธ๋ค์ ๋๋ถ๋ถ SSR๋ก ๋์๋์ด ์๊ธฐ ๋๋ฌธ์, ํ์ด์ง๊ฐ ์ฌ๋ฌ๊ฐ๋ก ๊ตฌ์ฑ๋ Multi Page Form ๋ฐฉ์์ ์ฌ์ฉํ์์ต๋๋ค. ํ์ง๋ง ์ค๋งํธํฐ์ด ๋ฑ์ฅํ๊ฒ ๋๋ฉด์, ์์ ์น๋ค์ ๋ชจ๋ฐ์ผ์ ์ต์ ํ๊ฐ ๋์ด์์ง ์์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๋ถํธํจ์ด ์ปค์ง๊ฒ ๋์์ต๋๋ค. ๊ทธ๋์ ์ฌ์ฉ์๋ค์ ๋ชจ๋ฐ์ผ ์ฑ๊ณผ ๊ฐ์ ํํ์ ์น ํ์ด์ง๊ฐ ํ์ํ๊ฒ ๋์๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ React, Angular, Vue ๋ฑ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ๊ฐ ์๊ธฐ๊ฒ ๋์๊ณ ,
CSR์ด ๊ฐ๋ฅํ SPA๊ฐ ๋ฑ์ฅํ๊ฒ ๋์์ต๋๋ค. ์ด SPA์ ํน์ง์ ๊ธฐ์กด์ ์นํ์ด์ง์๋ ๋ค๋ฅด๊ฒ 1๊ฐ์ ํ์ด์ง์์ ์ฌ๋ฌ ๋์์ด ์ด๋ฃจ์ด์ง๋ ๋ฐฉ์์ด๋ค.
๊ทธ๋์ ๋ง์น ๋ชจ๋ฐ์ผ ์ฑ๊ณผ ๋น์ทํ ํํ๋ก ์ด๋ฃจ์ด์ ธ ์์ด์ Header ์์ญ์ ๊ณ ์ ๋์ด ์๊ณ , Main ์์ญ์ ์ํ๋ง ๊ณ์ ๋ณ๊ฒฝํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๋จผ์ ์ผ๋ฐ์ ์ธ React๋ ๋๋ง ๋ฐฉ์์ render() ํจ์๊ฐ ๋จผ์ ์คํ๋๊ณ , ๊ทธ ๋ค์์๋ ComponentDidMount()ํจ์๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋ค์ ํ๋ฒ ๋ ๋๋ง์ด ๋๋ค. ๋ฐ๋ฉด์ Next๋ getInitialProps()๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๊ฐ์ ธ์์ ํ ๋ฒ์ ๋ ๋๋ง์ ํด์ค๋ค. ๋ณด์๋ค์ํผ SSR์ ํ ๋ฒ์ ๋ ๋๋ง์ด ๋๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ๋ก๋ฉ ์๋๋ ๋น ๋ฅด์ง๋ง, page ์ด๋ ์์๋ CSR๋ณด๋ค ๋๋ฆฌ๋ค. ์๋ํ๋ฉด page๋ฅผ ์์ฒญ ํ ๋๋ง๋ค ์ค๋ณต๋๋ ํ์ผ์ ๋ด๋ ค๋ฐ์์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง CSR์ ์ด๊ธฐ๋ก๋ฉ ์๋๋ ๋๋ฆฌ์ง๋ง, ์ฒซ ํ์ด์ง ๋ก๋ฉ ๋ ๋ชจ๋ ํ์ผ์ ๋ด๋ ค๋ฐ๊ธฐ ๋๋ฌธ์ ํ์ด์ง๋ฅผ ์ด๋ํ ๋๋ง๋ค ํด๋น ํ์ด์ง์์ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ถ๋ฌ์ ์ฌ์ฉํ๋ฉด ๋๋ค.