๐Ÿ”ฌComputer Science/๋„คํŠธ์›Œํฌ

TIL) AJAX, AJAX ์žฅ๋‹จ์ 

hellohailie 2022. 6. 9. 15:01

 

์›นํŽ˜์ด์ง€์—์„œ ์ผ๋ถ€๋ถ„๋งŒ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด 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๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

๐Ÿ˜ƒ ์ž˜๋ชป๋œ ๊ฐœ๋… ์ „๋‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €์˜ ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค๐Ÿค“