๐AJAX(Asynchronous Javascript and XML)
- AJAX๋ ์ธ์ด๋ ํ๋ ์์ํฌ๊ฐ ์๋ ๊ตฌํํ๋ ๋ฐฉ์์ ์๋ฏธ
- AJAX๋ ์น(Web)์์ ํ๋ฉด์ ๊ฐฑ์ ํ์ง ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก๋ถํฐ ๊ฐ์ ธ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธ
- JavaScript์ XMLHttpRequest(XHR) ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์กฐํํ๋ค.
- ํ๋ฉด๊ฐฑ์ ์ด ์์ผ๋ฏ๋ก ์ฌ์ฉ์ ์ ์ฅ์์๋ ํธ๋ฆฌํ์ง๋ง, ๋์ ์ผ๋ก DOM์ ๊ตฌ์ฑํด์ผ ํ๋ฏ๋ก ๊ตฌํ์ด ๋ณต์กํ๋ค.
โ์ผ๋ฐ ์์ฒญ์ ๋ํ ์๋ต
- data๋ฅผ ์ ๋ ฅ ํ event ๋ฐ์
- Ajax๋ฅผ ์ ์ฉํ์ง ์์ ์์ฒญ์ ์๋ฒ์์ data๋ฅผ ์ด์ฉํ์ฌ logic ์ฒ๋ฆฌ
- logic ์ฒ๋ฆฌ์ ๋ํ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์๋ต page๋ฅผ ์์ฑํ๊ณ client์ ์ ์ก(ํ๋ฉด ์ ํ์ด ์ผ์ด๋จ)
โAjax ์์ฒญ์ ๋ํ ์๋ต
- data๋ฅผ ์ ๋ ฅ ํ event ๋ฐ์
- Ajax๋ฅผ ์ ์ฉํ๋ฉด event ๋ฐ์์ ์๋ฒ์์ ์์ฒญ์ ์ฒ๋ฆฌํ ํ Text, XML ๋๋ JSON์ผ๋ก ์๋ต
- client(Browser)์์๋ ์ด ์๋ต data๋ฅผ ์ด์ฉํ์ฌ ํ๋ฉด ์ ํ์์ด ํ์ฌ ํ์ด์ง์์ ๋์ ์ผ๋ก ํ๋ฉด์ ๊ตฌ์ฑํ๋ค. (ํ๋ฉด ์ ํ X)
๐SSR๊ณผ CSR
์น ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ์๋ฒ ์ค์ฌ์ ์ํธ์์ฉ ๋ฐฉ์(SSR)๊ณผ ํด๋ผ์ด์ธํธ ์ค์ฌ์ ์ํธ์์ฉ ๋ฐฉ์(CSR) ๋ฐฉ์์ผ๋ก ๊ตฌ๋ถ๋๋ค.
1) SSR(Server-Side Rendering)
- ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๊ฐ ์์ฒญํ ๋๋ง๋ค ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ฌ ์ฒ๋ฆฌํ์ฌ ์๋ฒ์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ๋ง๋ค ์๋ก์ด ํ๋ฉด(html)์ ์ ๊ณต
- ์๋ฒ๊ฐ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์ฃผ์ฒด๊ฐ ๋จ
- MPA(Multiple Page Application)์์ ์ฌ์ฉํ๋ ๋ฐฉ์
2) CSR(Server-Side Rendering)
- ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๊ฐ ์์ฒญ์ ๋ฐ๋ผ ํ์ํ ๋ถ๋ถ๋ง ์๋ต์ ๋ฐ์ ๋ ๋๋งํ๋ ๋ฐฉ์
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ชจ๋ data(JSON, XML)์ ์ ๊ณต
- ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๊ฐ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์ฃผ์ฒด๊ฐ ๋จ
- SPA(Single Page Application)์์ ์ฌ์ฉํ๋ ๋ฐฉ์
๐AJAX ์ฌ์ฉ๋ฐฉ์
1. fetch
2. ์ธ๋ถ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์ฉ๋ฐฉ์-jQuery, axios
โfetch
๋ธ๋ผ์ฐ์ ์์ fetch() ํจ์๋ฅผ ์ง์ํ๊ธฐ ์ด์ ์๋ XMLHttpRequest๋ฅผ ์ด์ฉํ์ฌ ์ง์ HTTP ์์ฒญํ๊ณ ์๋ต์ ์ง์ ๊ตฌํํ๋ค. ํ์ง๋ง ๋ณต์กํ ๊ตฌํ ๋๋ฌธ์ jQuery๋ axios์ ๊ฐ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๋ธ๋ผ์ฐ์ ๊ฐ fetch() ํจ์๋ฅผ ์ง์ํ๋ฉด์ ์์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๊ฐ๋จํ ๊ตฌํ ๊ฐ๋ฅ์ด ๊ฐ๋ฅํด์ก๋ค.
- fetch()ํจ์๋ ์ฒซ๋ฒ์งธ ์ธ์๋ก URL, ๋๋ฒ์งธ ์ธ์๋ก options ๊ฐ์ฒด๋ฅผ ๋ฐ๋๋ค.
- options์ ์๋ฌด๊ฒ๋ ๋๊ธฐ์ง ์์ผ๋ฉด ์์ฒญ์ GET ๋ฐฉ์์ผ๋ก ์งํ๋๋ฉฐ url๋ก๋ถํฐ content๊ฐ ๋ค์ด๋ก๋ ๋๋ค.
- ์คํ๊ฒฐ๊ณผ Promise ํ์ ์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
- ๋ฐํ๋ Promise ๊ฐ์ฒด๋ API ํธ์ถ์ด ์ฑ๊ณตํ์ ๊ฒฝ์ฐ ์๋ต๊ฐ์ฒด(response)๋ฅผ resolveํ๊ณ , ์คํจํ์ ๊ฒฝ์ฐ ์์ธ(error) ๊ฐ์ฒด๋ฅผ rejectํ๋ค.
*์๋ต ๋ณธ๋ฌธ(data)๋ฅผ ๋ฐ๋ ๋ฐฉ๋ฒ
- response.text(): ์๋ต์ ์ฝ๊ณ text ๋ฐํ
- response.json(): ์๋ต์ JSONํ์์ผ๋ก ๋ฐํ
- response.formData(): ์๋ต์ formData ๊ฐ์ฒด ํํ๋ก ๋ฐํ
- response.blob(): ์๋ต์ Blob ํํ๋ก ๋ฐํ๋
๐๋ฐ์ดํฐ ์ ์ก ํ์
1. CSV
- ๊ฐ ํญ๋ชฉ์ ์ผํ(,) ํํ๋ก ๊ตฌ๋ถํด ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ
- ๋ค๋ฅธ ๋ ํ์์ ๋นํด ๊ต์ฅํ ์งง๋ค. ์ฆ, ๋ง์ ์์ ๋ฐ์ดํฐ ์ ์ก์์ ์ ๋ฆฌํ๋ค.
- ํ์ง๋ง ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ๋ด์ฉ์ธ์ง ํ์ ํ๊ธฐ ํ๋ค๋ค. (์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒฝํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ณต์ ํ ๊ฒฝ์ฐ ๊ฐ๋ฅ)
2. XML
- xml์ tag ํํ๋ก data๋ฅผ ํํํ๋ค.
- tag๋ฅผ ๋ณด๋ฉด ๊ฐ data๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ํ์ ํ ์ ์๋ค.
- tag์ ์ฌ์ฉ์ ์ ์ ์์ฑ์ ๋ฃ์ ์ ์์ผ๋ฏ๋ก ๋ณต์กํ data๋ฅผ ์ ๋ฌํ ์ ์๋ค.
3. JSON
- CSV์ XML์ ๋จ์ ์ ๊ทน๋ณตํ ํ์์ผ๋ก JavaScript์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด์ ํ์์ผ๋ก data๋ฅผ ํํํ๋ค.
- AJAX ์ฌ์ฉ์ ๊ฑฐ์ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ data ํํ ๋ฐฉ์์ด๋ค.
- key-value ์์ผ๋ก ๋์ด ์๋ค.
๐๋๊ธฐ์ ์ฒ๋ฆฌ์ ๋น๋๊ธฐ์ ์ฒ๋ฆฌ
1. ๋๊ธฐ์ ์ฒ๋ฆฌ(Synchronous)
- ์ฝ๋๊ฐ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ ๋ฐฉ์
- ๊ฐ๊ฐ์ ์์ ์ ์ด์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฉฐ, ํ ๋ฒ์ ํ๋์ ์์ ๋ง์ ์ํํ๋ค.
- ์ฝ๋์ ํ๋ฆ์ด ์์์ ์๋๋ก ์ด์ด์ง๋ฉฐ, ๊ฐ ๋ฌธ์ฅ์ ์ด์ ๋ฌธ์ฅ์ ์คํ์ด ์๋ฃ๋ ํ์ ์คํ๋๋ค.
2. ๋น๋๊ธฐ์ ์ฒ๋ฆฌ(Asynchronous)
- ์ฝ๋์ ์ผ๋ถ๊ฐ ์๋ฃ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ๋ค์ ์์ ์ ์ํํ๋ ๋ฐฉ์
- ํน๋ณํ ์ด๋ฒคํธ ๋ฃจํ, ์ฝ๋ฐฑ ํจ์๋ฅผ ํตํด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฒ๋ฆฌ๋จ, ์์ ์ด ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ฉ์ธ ํ๋ก๊ทธ๋จ์ผ๋ก ์ ๋ฌ๋๋ค.
- ๋น๋๊ธฐ์ ์ฒ๋ฆฌ๋ ์ฃผ๋ก ๋คํธ์ํฌ ์์ฒญ, ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ, ํ์ด๋จธ ๋ฑ์ ์์ ์์ ์ฌ์ฉ๋๋ค.
'๐CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Access Token๊ณผ Refresh Token์ ์ ์ฅ ์์น (1) | 2024.10.28 |
---|---|
์ด์์ฒด์ (0) | 2024.07.10 |
React์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (0) | 2024.04.19 |
React ์ปดํฌ๋ํธ์ ๋ผ์ดํ์ฌ์ดํด (0) | 2024.04.19 |
www.naver.com์ ์ฃผ์์ฐฝ์ ์ ๋ ฅํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? (0) | 2024.04.14 |