-
React๋ Next.js ์ ์ฐ๋๋ฐ? | ์ฝ๋ฉ์ ํ 2022 new ๋ฆฌ์กํธ 1๊ฐ Review๊ฐ๋ฐ/์น 2023. 7. 18. 20:04
React๋ก ํํ์ด์ง๋ฅผ ๋ง๋ค์ด๋ณธ์ง ์ข ์ค๋๋๋ค.
๊ธฐ์ต์ด ๋ง์ด ํ๋ ค์ ธ ๋ณต์ต ์ฐจ ์ฝ๋ฉ์ ํ ๋ฆฌ์กํธ ๊ฐ์๋ฅผ ๋ค์๋ค.
๊ฐ๋ฐํ ๋ ์ด๋ ดํ์ด ์๊ณ ์๋ ๊ฑธ ๊น๋ํ๊ฒ ์ ๋ฆฌํ ์ ์๋ ์ข์ ๊ฐ์ ๊ฐ๋ค.
์ด์ ๊ฐ์๋ ์กด์ฌํ๋๋ฐ, ์ต์ ํ ํด์ฃผ์ ์ ๊ฐ์ฌํ๋ค.
์์ 1๊ฐ์ ์ฃผ์ ๋ ๋ฆฌ์กํธ ๋ฝ์ฃผ์ (ใ ใ ) & ์ค์น์๋๋ฐ,
์ค์น๋ ์ ์ ํด๋ณด๊ธฐ๋ ํ๊ณ , ์์ฃผ ๊ฐ๋จํ ์์ค์ด์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฝ์ฃผ์ ๊ณผ์ (๊ฐ๋ฐ์ ์์ํ ๋ ์ ๋ง ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค) ์์
๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์ ์ด์ ์ธ ๊ฐ์ง๋ฅผ ์๋ ค์ฃผ์๋ค.
- SPA (Single Page Application) ๊ฐ๋ฅ
- ์ปดํฌ๋ํธ ๋จ์๋ก ๊ฐ๋ฐ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ๊ฐ html์ ์๋ ๋ฐ์๋จ ex) useState
์์ ์ ํด์ธ FE ์ธํด์ญ ๋ฉด์ ์ ๋ณผ ๋, ํ๋ก์ ํธ์ react๋ฅผ ์ฌ์ฉํ ์ด์ ๋ฅผ ๋ฌผ์ด๋ดค์๋ค.
๊ทธ ๋ ๋ฌด์ง๋ชฝ๋งคํ ๋๋ ์์ด๋ก ๋๋ฌ๋๋ฌ "ํ์ฌ์์ ๋ง์ด ์ฐ๊ธธ๋..." ๋ผ๋ ๋ต๋ณ์ ํ๊ณ
๋ฉด์ ๊ด๋์ด ๋ง์ด ๋นํฉํ์ จ๋ ๊ธฐ์ต์ด ์๋ค.
๋ด ์์ด ์ค๋ ฅ๊ณผ ๋ต๋ณ ๋ชจ๋๊ฐ ํฉ๋นํ์ จ์์ง๋ ๋ชจ๋ฅธ๋ค.
์ฌ๋ฌ๋ถ๋ ์ด๋ฐ ๊ฒฝํ์ ๊ฐ๊ณ ์ถ์ง ์๋ค๋ฉด ์ง๊ธ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๊ณต๋ถํ๋๋ก ํ์.
1. SPA (Single Page Application) ๊ฐ๋ฅ
์ตํ React์ ์ฅ์ ์ผ๋ก ์ ๋ช ํ๋ค.
๊ทธ๋ ๋ค๋ฉด Single Page Application์ ์ฌ์ฉํ๋ฉด ์ฅ์ ์ ๋ญ๊น?
ํธ๋ํฝ์ ๊ฐ์, ๋ฐ์์ฑ์ ํฅ์์ผ๋ก ์ธํด ์ฑ์ฒ๋ผ ์์ฐ์ค๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ(UX)๋ฅผ ์ ๊ณตํ๋ค.
ํธ๋ํฝ์ด ๊ฐ์ํ๊ณ ๋ ๋๋ง์์ ์ข์ ํจ์จ์ ๊ฐ์ง๋ ์ด์ ๋,
์๋ก์ด ํ์ด์ง ์์ฒญ ์ ์ ์ฒด๋ฅผ ๋ ๋๋งํ์ง ์๊ณ ๋ณ๊ฒฝ๋๋ ๋ถ๋ถ๋ง ๊ฐฑ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ํ, ์๋กญ๊ฒ ๊ฐฑ์ ๋๋ ๋ถ๋ถ๋ง ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์ ์๋ก๊ณ ์นจ์ด ๋ฐ์ํ์ง ์์ ๋น ๋ฅธ ํ๋ฉด ์ด๋์ด ๊ฐ๋ฅํ๋ค.
SPA๊ฐ ๋ฑ์ฅํ๊ธฐ ์ , ๊ธฐ์กด Web App์ ๊ตฌ์ฑ๋ฐฉ์์ธ SSR(Server Side Rendering)์
ํ๋ฉด์ ๋ณด์ฌ์ง ๋ฆฌ์์๋ฅผ ์๋ฒ๋ก ์์ฒญํ๊ณ , ์๋ฒ๋ก๋ถํฐ ๋ฐ์์จ ๋ฆฌ์์ค๋ฅผ ๋ ๋๋งํ๋ค.
๊ทธ๋ฌ๋ SPA๋ ๋ ๋๋ง์ ์ญํ ์ ์๋ฒ์๊ฒ ๋๊ธฐ์ง ์๊ณ ๋ธ๋ผ์ฐ์ ์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด๋ค.
์ ์ ๋ฆฌ์์ค๋ฅผ ์ต์ด์ ํ ๋ฒ ๋ค์ด๋ก๋ํ๊ณ , ์ดํ์๋ ํ์ํ ๋ฐ์ดํฐ๋ง ์ ๋ฌ๋ฐ์ ํ์ด์ง๋ฅผ ๊ฐฑ์ ํ๋ค.
์ด๋ก ์ธํด ์๊ธฐ๋ trade-off ๊ฒฉ์ ๋จ์ ๋ ์๋ค.
์ฒซ์งธ๋ก, ์ ์ ๋ฆฌ์์ค๋ฅผ ํ๋ฒ์ ๋ค์ด๋ก๋ ํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ๊ตฌ๋์๋๊ฐ ๋๋ฆฌ๋ค.
๋์งธ๋ก, SPA ๊ตฌ์กฐ ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํด๋ผ์ด์ธํธ์์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ,
ํด๋น ๋ก์ง๋ค์ JavaScript๋ฅผ ํตํด ๊ตฌํ๋๋ฏ๋ก ์ฝ๋๊ฐ ์ธ๋ถ์ ๋ ธ์ถ๋๋ ๋ณด์์ ๋ฌธ์ ๊ฐ ์๋ค.
์ ์งธ๋ก, ๊ฒ์์์ง ์ต์ ํ (Search Engine Optimization, SEO)๊ฐ ์ด๋ ต๋ค.
๊ฒ์ ์์ง์ด ํฌ๋กค๋งํ ๋, JavaScript๋ฅผ ์คํํ์ง ์๊ณ App์ด ๋ก๋๋๊ธฐ ์ ์ ๋น ์ํ์ ์ฝ๋๋ฅผ ํฌ๋กค๋งํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ๋๋ฌธ์ ์ธ๋ฑ์ฑ์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์๋๋ค.
์ ํต์ ์ธ MPA (Multi Page Rendering)์ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ์์ JavaScript ์ฝ๋๊ฐ ๋์ํ๊ธฐ ์ ์๋ ์์ฑ๋ ํํ์ ํ ํ๋ฆฟ (HTML์ ๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ์ํ)์ ์๋ฒ๋ก๋ถํฐ ์ ๋ฌ๋ฐ๋๋ค.
์ด ๋๋ฌธ์ ๊ฒ์ ์์ง์ด ํ์ด์ง ํฌ๋กค๋งํ๊ธฐ์ ๋งค์ฐ ์ ํฉํ๋ค.
์ฆ, SPA๋ ๋์ฒด๋ก CSR(Client Side Rendering) ๋ฐฉ์์ด๋ค.
์ด ๋ง์ 'SPA๋ฅผ SSR ๋ฐฉ์์ผ๋ก ๋ ๋๋ง ํ ์ ์๋ค'๋ ๊ฒ์ด๋ค.
๋ฐ๋ก Next.js๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. SSR ๊ธฐ๋ฐ์ Web APP์ ์ปดํฌ๋ํธ ๋จ์๋ก ๊ฐ๋ฐํ ์ ์๊ฒ ํด์ฃผ๋ ํ๋ ์์ํฌ์ด๋ค.
์ด๋ ๊ฒ ํ๋ ์ด์ ๋, SSR (๊ธฐ์กด MPA) ๋ฐฉ์์ ์ฅ์ ์ ์ทจํ๊ธฐ ์ํจ์ด๋ค.
2. ์ปดํฌ๋ํธ ๋จ์๋ก ๊ฐ๋ฐ ๊ฐ๋ฅ
์ฐ๋ฆฌ๊ฐ ํจ์ํ๋ฅผ ํ์ ๋ ์ป์ ์ ์๋ ์ฅ์ ๊ณผ ๊ฐ๋ค.
์ฝ๋ ๊ฐ๋ ์ฑ์ด ์ฌ๋ผ๊ฐ๋ฉฐ, ์ฌ์ฌ์ฉ์ฑ์ด ํ๋๋๋ค.
3. ๋ฐ์ดํฐ๊ฐ html์ ์๋ ๋ฐ์๋จ ex) useState
๋ฆฌ์กํธ๋ state์ ์ ์ฅ์,
๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๊ด๋ จ html์ ์๋์ผ๋ก ์ฌ๋ ๋๋งํด์ค๋ค.
์ฐธ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ด๋ค.
Next.js๋ ๋จ์ํ React๋ ํธํ์ฑ์ด ์ข์์ Node.js ๋์ ์ฐ๋ ์ค ์์๋๋ฐ,
์ด๋ฐ ์ด์ ๊ฐ ์๋ค๋ ๊ฑธ ์ค๋์ด๋ผ๋ ์๊ฒ ๋์ด์ ๋คํ์ด๋ค.
ํ๋งํ๋ฉด ๋ง์ ์ ๋ ๋ฒ ๋นํ ๋ปํ๋ค.
ํ๊ณ ์ถ์ ๊ฑด ์ฐธ ๋ง์ง๋ง ๋ ๋ถ์กฑํ ๊ฒ ๊ฐ์ ๋.
์ด์ฌํ, ์ฑ์คํ, ์ฐ์ ์์๋ฅผ ๋๊ณ ,
์ผ๋ฅธ ๋งํ๋ ๊ฐ์๋ฅผ ํ์ถํด์ ์ทจ์ง์ ํด์ผ๊ฒ ๋ค.
์ฐธ์กฐ : ์ฃผ์ธ์ฅ ์ค๋ง์นด์ธ - ์ฝ๊ธฐ ์ฌ์ด ๋ธ๋ก๊ทธ ์์
'๊ฐ๋ฐ > ์น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[2023.07.09] ์ํ์ฝ๋ฉ Django ์ฒซ ์๊ฐ (0) 2023.07.18 [Django] ํฐ๋ฏธ๋์์ '?[31m', '?[0m'๊ณผ ๊ฐ์ ์ ์ ์๋ ๋ฌธ์๋ค์ด ํจ๊ป ๋์ค๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ (0) 2023.07.09