FE/React
[React] ๋ชจ๋ ๋ฆฌ์กํธ ๋ฅ๋ค์ด๋ธ 4. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ์ฃผ์ ์ ๋ฆฌ
1. ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ด๋?์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ์์ธ SPA๋ ๋ ๋๋ง๊ณผ ๋ผ์ฐํ ์ ํ์ํ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ ์๋ฒ๊ฐ ์๋ ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์กดํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค. SPA๋ ๋ง ๊ทธ๋๋ก ํ๋์ ํ์ด์ง๋ก ๊ตฌํ๋๋ฉฐ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ฐ์์ค์ง ์๋๋ค. ์ต์ด์ ์ฒซ ํ์ด์ง์์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ถ๋ฌ์จ ์ดํ์ ํ์ด์ง ์ ํ ๋จ๊ณ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ธ๋ฌ์ฐ์ ์ history.pushState์ history.replaceState๋ก ์ด๋ค์ง๊ธฐ ๋๋ฌธ์ ์๋ฒ์์ HTML์ ๋ด๋ ค๋ฐ์ง ์๊ณ ํ๋์ ํ์ด์ง์์ ๋ชจ๋ ์์ ์ ์ฒ๋ฆฌํ๋ค. SPA๋ ์ต์ด ์ฒซ ํ์ด์ง๋ฅผ ๋ฐ์ ๋๋ SSR์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ดํ์๋ CSR์ ์ด์ฉํ์ฌ ๋ ๋๋ง์ ์งํํด์ผ ํ๋ค. 1.1 SPA์์ ํ์ด์ง ์ ํ์ด ์ผ์ด๋๋ ๊ณผ์ ์ ์ค๋ช ํ์์คํ์ด์ง ์ ํ ์..
[React] SPA, CSR์ ๊ฐ์๊น ๋ค๋ฅผ๊น
๋ต๋ถํฐ ์ด์ผ๊ธฐ ํ์๋ฉด SPA, CSR์ ๊ฐ์ง ์๋ค. ์ ์ด์ ๋น๊ต ๋์์ด ์๋๋ค. CSR(Client Side Rendering)์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์๋ ๋น HTML๋ง ๋ฐ์์ค๊ณ , ๋ฐ์ดํฐ๋ ์ฌ๋ฌ static ํ์ผ๋ค์ด ๋ก๋๋ ์ดํ์ ์์ฒญํด์ ๋ฐ์์ค๋ ๋ฐฉ์์ผ๋ก ์งํ๋จSSR(Server Side Rendering)CSR๊ณผ ๋ฐ๋๋ก ๋ฐ์ดํฐ๊น์ง ๋ชจ๋ ์ฝ์ ํ์ฌ ์์ฑ๋ HTML์ ๋ฐ์์ค๋ ๋ฐฉ์์ผ๋ก ์งํ๋จSPA(Single Page Application)์๋ฒ๋ก๋ถํฐ ์ฒซ ํ์ด์ง๋ง ๋ฐ์์ค๊ณ ์ดํ์๋ ๋์ ์ผ๋ก ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ์ฌ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ฐ์์ค์ง ์๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋งํจ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฑฐ๋ ์กฐํํ ๋ ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ ๋์ง ์๊ณ ๋ค๋ฅธ ํ์ด์ง๋ก ๋์ด๊ฐ์ง ์์MPA(Multiple Page Appl..
React ๊ฐ๋ฐ์ Node.js๋ฅผ ์ค์นํ๋ ์ด์
Node.js๋ React๋ฅผ ์ฌ์ฉํ๊ธฐ ๋ ์ฝ๊ฒ ํด์ฃผ๋ ๋๊ตฌ๋ค์ ๋ด์ฅํ๊ณ ์๋ ์คํ์์ค์ด์JavaScript runtime environment(์คํ ํ๊ฒฝ)์ด๋ค.(*runtime : ํน์ ์ธ์ด๋ก ๋ง๋ ํ๋ก๊ทธ๋จ๋ค์ ์คํํ ์ ์๋ ํ๊ฒฝ) React ๊ฐ๋ฐ์ ์ฒ์ ์์ํ ๋, Node.js ๋ฅผ ํจ๊ป ์ค์นํ๋ค.Node.js๋ ๋ฌด์์ด๊ธฐ์ ํญ์ react์ ๊ฐ์ด ๋ฐ๋ผ๋ค๋๋ ๊ฑธ๊น? ๊ฒฐ๋ก ์ ์ผ๋ก ๋งํ๋ฉด, React ๊ฐ๋ฐ์, Node.js๊ฐ ํ์์ ์ธ ๊ฒ์ ์๋๋ค. ์ฆ, node.js ์์ด๋ React๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค! ๊ทธ๋๋ Node.js๋ฅผ ์ค์นํ๋ ๋ฐ ์ด์ ๋ ์๋ ๋ฒ!๋งจ ์ฒ์์ ์ธ๊ธ๋ ํ๋ค.์ฐจ๊ทผ์ฐจ๊ทผ ์ดํด๋ณด์ 1๏ธโฃ Node.js๋ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ํ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ด๋ค.์๋ฐ์คํฌ๋ฆฝํธ๋ HTML์ ์ข ์๋์ด ์๋ ์ธ์ด์ด๋ฉฐ, HT..
ํ์ด์ง ์ด๋ ์ ์คํฌ๋กค ์์น ํญ์ ์์ ๊ณ ์ ์ํค๊ธฐ
ํ์ด์ง ์ด๋ ์ ํด๋นํ์ด์ง์ ์คํฌ๋กค์ ํญ์ ์๋จ์ผ๋ก ์ด๋์ํค๋ ๋ฐฉ๋ฒ์ด๋ค.์๋์์ ์๋ก ์์ง์ด๋ ์ ๋๋ฉ์ด์ ์ด ์๋ ํ์ด์ง์๊ธฐ์ ์คํฌ๋กค ์์น๊ฐ ์ค์ํ๋๋ฐ, ์ด์ ํ์ด์ง์ ์คํฌ๋กค ์์น๊ฐ ์๋จ์ด ์๋๋ฉด ์ ๋๋ฉ์ด์ ์ด ๊นจ์ง๋ ์ค๋ฅ๊ฐ ๋ฐ์ํด ํด๋น ๋ฐฉ๋ฒ์ผ๋ก ์ค๋ฅ๋ฅผ ํด๊ฒฐํ์๋ค.import { useLocation } from "react-router";import { useEffect } from "react";function ExamplePage() { const { location } = useLocation(); useEffect(() => { window.scrollTo(0, 0); }, [location]); *window.scrollTo- ๋ฌธ์์ ์ง์ ํ ์์น๋ก ์คํฌ๋กค๋๋ณด๊ธฐ์ํฉ1. ์๋์์ ์๋ก ๋จ๋ ..