์นํ์ด์ง์์ ์ผ๋ถ๋ถ๋ง ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด AJAX๋ฅผ ์ฌ์ฉํ๋ค.
AJAX ๋?
AJAX๋ Asynchronous JavaScript And XMLHttpRequest์ ์ฝ์๋ก, JavaScript, DOM, Fetch, XMLHttpRequest, HTML ๋ฑ์ ๋ค์ํ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ์น ๊ฐ๋ฐ ๊ธฐ๋ฒ์ด๋ค.
AJAX์ ๊ฐ์ฅ ํฐ ํน์ง์, ์น ํ์ด์ง์ ํ์ํ ๋ถ๋ถ์ ํ์ํ ๋ฐ์ดํฐ๋ง ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์์ ํ๋ฉด์ ๊ทธ๋ ค๋ผ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์๋ฅผ๋ค์ด 1, ๊ตฌ๊ธ ํํ์ด์ง์์ ๊ฒ์์ฐฝ์ ๊ฒฝ์ฐ, ์ ์ ๊ฐ ๊ฒ์์ฐฝ์ ํ ๊ธ์์ฉ ์ ๋ ฅํ ๋๋ง๋ค, ํด๋น ๊ธ์๋ก ์์ํ๋ ๋จ์ด๋ค์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์์, ์ถ์ฒ ๊ฒ์์ด๋ก ๋ณด์ฌ์ค๋ค.
์๋ฅผ๋ค์ด 2, ๋ฌดํ ์คํฌ๋กค์ด ๋ฐ์ํ ๋๋ง๋ค Fetch๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์ ๋ฐ์ดํธํ๊ณ ๋ ๋๋งํ๊ธฐ
์๋ฅผ๋ค์ด 3, ๋ค์ด๋ฒ ๋ด์ค ํญ์ ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์์ ๋ฐ์์ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ํ๋ค.
๐ ํ์ํ ๋ฐ์ดํฐ๋ง ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์์ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๋๋ฉฐ, ์ฌ๊ธฐ์ AJAX๊ฐ ์ฌ์ฉ๋๋ค.
AJAX์ ๋ ๊ฐ์ง ํต์ฌ ๊ธฐ์ (JS DOM & Fetch)
1. Fetch๋ฅผ ์ฌ์ฉํ๋ฉด, ์๋ก์ด ํ์ด์ง๋ก ์ด๋ํ์ง ์์๋ ์๋ฒ๋ก๋ถํฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ์ ์๋ค.
Fetch๋ ์ฌ์ฉ์๊ฐ ํ์ฌ ํ์ด์ง์์ ์์ ์ ํ๋ ๋์ ์๋ฒ์ ํต์ ํ ์ ์๋๋ก ํ๋ค. ์ฆ, ๋ธ๋ผ์ฐ์ ๋ Fetch๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ ๋๊น์ง ๋ชจ๋ ๋์์ ๋ฉ์ถ๋ ๊ฒ์ด ์๋๋ผ ๊ณ์ํด์ ํ์ด์ง๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๋น๋๊ธฐ์ ์ธ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
2. JavaScript์์ DOM์ ์ฌ์ฉํด ์กฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์, Fetch๋ฅผ ํตํด ์ ์ฒด ํ์ด์ง๊ฐ ์๋ ํ์ํ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ DOM์ ์ ์ฉ์์ผ ์๋ก์ด ํ์ด์ง๋ก ์ด๋ํ์ง ์๊ณ ๊ธฐ์กด ํ์ด์ง์์ ํ์ํ ๋ถ๋ถ๋ง ๋ณ๊ฒฝํ ์ ์๋ค.
Fetch๋ XHR์ ๋จ์ ์ ๋ณด์ํ ์๋ก์ด Web API์ด๋ฉฐ, XML๋ณด๋ค ๊ฐ๋ณ๊ณ JavaScript์ ํธํ๋๋ JSON์ ์ฌ์ฉํ๋ค.
promise ์ง์ ๋ฑ์ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด์ ๋ ๋ง์ ์ฌ๋๋ค์ด Fetch๋ฅผ ์ฌ์ฉํ๋ค.
fetch('http://52.78.213.9:3000/messages')
.then (function(response) {
return response.json();
})
.then(function (json) {
...
});
AJAX์ ์ฅ์
- ์๋ฒ์์ HTML์ ์์ฑํ์ฌ ๋ณด๋ด์ฃผ์ง ์์๋ ์นํ์ด์ง๋ฅผ ๋ง๋ค ์ ์๋ค.
๐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๊ฐ์ ธ์์ ๋ธ๋ผ์ฐ์ ์์ ํ๋ฉด์ ์ผ๋ถ๋ง ์ ๋ฐ์ดํธํ์ฌ ๋ ๋๋งํ๋ฉด ๋๋๊น!
- ํ์คํ๋ ๋ฐฉ๋ฒ
๐ XHR์ด ํ์คํ๋๋ฉด์๋ถํฐ ๋ธ๋ผ์ฐ์ ์ ์๊ด์์ด AJAX๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค.
- ์ ์ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ
๐ ํ์ํ ์ผ๋ถ๋ถ๋ง ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ณ ๋ ๋ง์ ์ํธ์์ฉ์ด ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ค.
- ๋ ์์ *๋์ญํญ
๐ AJAX์์๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํ ์คํธ ํํ(JSON, XML ๋ฑ)๋ก ๋ณด๋ด๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์๋ค.
*๋์ญํญ: ๋คํธ์ํฌ ํต์ ํ ๋ฒ์ ๋ณด๋ผ ์ ์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ
AJAX์ ๋จ์
- Search Engine Optimization(SEO)์ ๋ถ๋ฆฌ
๐ AJAX ๋ฐฉ์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ๋ฒ ๋ฐ์ HTML์ ๋ ๋๋ง ํ ํ, ์๋ฒ์์ ๋น๋๊ธฐ์ ์ผ๋ก ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๊ทธ๋ ค๋ด๋๋ฐ, ์ฒ์ ๋ฐ๋ HTML ํ์ผ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฑ์ฐ๊ธฐ ์ํ ํ๋ง ์์ฑ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๊ทธ๋์ AJAX ๋ฐฉ์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ HTML ํ์ผ์ ๋ผ๋๋ง ์๊ณ ๋ฐ์ดํฐ๋ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ดํธ์ ์ ๋ณด๋ฅผ ๊ธ์ด๊ฐ๊ธฐ ์ด๋ ต๋ค.
- ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ ๋ฌธ์
๐ AJAX์์๋ ์ด์ ์ํ๋ฅผ ๊ธฐ์ตํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ค๋ก๊ฐ๊ธฐ ๋ฑ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด์๋ ๋ณ๋๋ก History API๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.