๐ SPA๋?
ํ ๋ง๋๋ก 'ํ์ด์ง๊ฐ ํ๋์ฒ๋ผ ๋ณด์ด๋ ์น์ฑ'์ ๋งํ๋ค.
๋ก๊ทธ์ธ์ ์์๋ก ๋ค๋ฉด,
๐ก MPA (Multi Page Application) = ์ ํต์ ์ธ ์น์ฑ
๋ก๊ทธ์ธ ํด๋ฆญ → ์๋ฒ์์ ์๋ก์ด HTML ํ์ด์ง ์ ์ฒด๋ฅผ ์๋ตํด์ ์๋ก๊ณ ์นจ
โ SPA ํ๊ฒฝ์์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ์ฌ๊ธฐ์ ์์์ผ ํ Pointโ
SPA๋ ํ๋ฉด ์ ํ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ ํ๊ณ , ๋ฐฑ์๋๋ ๋ฐ์ดํฐ๋ง ์ ๊ณตํ๋ ๊ตฌ์กฐ๋ค.
๊ทธ๋์ Spring Boot๋ REST API ์๋ฒ์ฒ๋ผ ๋์ํด์ผ ํจ!
๐ฌ ์์
React ๋ก๊ทธ์ธ ํ๋ฉด์์ ์์ด๋/๋น๋ฒ ์ ๋ ฅ → POST /auth/login API๋ก ๋ฐฑ์๋์ ์์ฒญ
→ ๋ฐฑ์๋๋ JSON ์๋ต๋ง ์ค ({ token: "..." })
React/Vue/Angular๋ก ๋ง๋ ํ๋ก ํธ๋ ๋ค SPA์ธ๋ฐ, ์ง๊ธ ๊ฐ์ธ์ ์ผ๋ก ์งํํ๋ ํ๋ก์ ํธ๊ฐ Spring Boot + React ์กฐํฉ์ด๋ผ SPA ๊ฐ๋ ์ ๋ค์ ๋ณต์ตํ๊ณ ์ ํ๋ค.
๐ CORS (Cross-Origin Resource Sharing) | ํ๋ก ํธ ์๋ฒ(3000) ↔ ๋ฐฑ์๋ ์๋ฒ(8080) ์๋ก ๋ค๋ฅธ ๋๋ฉ์ธ์ด๋ผ ์์ฒญ ๋งํ → CORS ์ค์ ํ์ |
๐ REST API | SPA๋ HTML์ด ์๋๋ผ JSON๋ง ์์ฒญํจ → ๋ฐฑ์๋๋ API๋ง ์ ๊ณต |
๐ JWT ์ธ์ฆ | SPA์์๋ ์๋ฒ๊ฐ ์ธ์
์ ๋ค๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ์ธ์
๊ธฐ๋ฐ ๋ก๊ทธ์ธ(์ฟ ํค+์๋ฒ ์ธ์
) ๋ณด๋ค ๋ฌด์ํ ์ธ์ฆ ๋ฐฉ์์ธ ํ ํฐ ๊ธฐ๋ฐ(JWT) ์ด ์ ํฉํจ → ํด๋ผ์ด์ธํธ๊ฐ ํ ํฐ์ ์ ์ฅํ๊ณ , ์์ฒญ๋ง๋ค Authorization ํค๋์ ๋ถ์ฌ์ ์ธ์ฆ |
๐ ํ๋ก ํธ ๋น๋ ๋ฐฐํฌ | React ๋น๋๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ฐฑ์๋์์ ํจ๊ป ์๋นํ ์๋ ์์ (/static, /public) but, ๋ณดํต์ ํ๋ก ํธ+๋ฐฑ ๋ถ๋ฆฌ๊ฐ ๋ ์ผ๋ฐ์ |
'Frontend > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] BOM(Browser Object Model) - window ๊ฐ์ฒด (0) | 2024.01.11 |
---|---|
[JavaScript]JSON ํด๋์ค ํจ์ (0) | 2024.01.09 |
[JavaScript]Math ํด๋์ค ํจ์ (0) | 2024.01.08 |
[JavaScript]Date ํด๋์ค ํจ์ (0) | 2024.01.08 |
[JavaScript] String ํด๋์ค ํจ์ (1) | 2024.01.08 |