AJAX (Asynchronous JavaScript And XML HttpRequest)
: JavaScript, DOM, Fetch, XML HttpRequest, HTML 등의 다양한 기술을 사용하는 웹 개발 기법
- 가장 큰 특징은 웹 페이지의 필요한 부분만 비동기적으로 받아와 화면에 그려낼 수 있다는 것
- ex. 페이스북 메시지나 네이버 포털사이트의 뉴스 탭 처럼 비동기적으로 데이터를 서버에서 받아와 브라우저에 렌더링하는 것
1. AJAX의 두가지 핵심 기술
1.1 Fetch 예제
1.2 XML HttpRequest 예제
2. AJAX의 장점
3. AJAX의 단점
1. AJAX의 두 가지 핵심 기술
- JavaScript 와 DOM 그리고 Fetch임
- 전통적인 웹 애플리케이션에서는 클라이언트에서 요청을 보내면 매번 새로운 페이지로 이동해야 했음
- 그러나 Fetch를 사용하면, 페이지를 이동하지 않아도 서버로 부터 필요한 데이터를 받아 올 수 있음
- Fetch는 사용자가 현재 페이지에서 작업을 하는 동안 서버와 통신 할 수 있도록 함
- 즉 브라우저는 Fetch가 서버에 요청을 보내고 응답을 받을 때 까지 모든 동작을 멈추는 것이 아니라 계속해서 페이지를 사용할 수 있게 하는 비동기적인 방식을 사용함
- 또한 JavaScript 에서 DOM을 사용해 조작할 수 있기 때문에 Fetch를 통해 전체 페이지가 아닌 필요한 데이터만 가져와 DOM에 적용 시켜서 새로운 페이지로 이동하지 않고 기존 페이에서 필요한 부분만 변경할 수 있음
1.1 Fetch 예제
- Fetch 이전에는 XHR(XML HttpRequest)를 사용
- Fetch는 XHR의 단점을 보안한 새로운 Web API이며 XML보다 가볍고 JavaScript와 호환되는 JSON을 사용
// Fetch를 사용
fetch('http://..생략..:3000/messages')
.then(function(response){
return response.json();
})
.then(function(json){
...
});
- 표준화된 XML을 사용했었으나 Crosss-Site 이슈등의 불편함이 있었고 그에 비해 Fetch는 pomise 지원등 장점을 가지고 있어 이제 많은 사람들이 Fetch를 사용함
1.2 XML HttpRequest 예제
// XMLHttpRequest를 사용
var xhr = new XMLHttpRequest();
xhr.open('get', 'http://52.78.213.9:3000/messages');
xhr.onreadystatechange = function(){
if(xhr.readyState !== 4) return;
// readyState 4 : 완료
if(xhr.status === 200){
//status 200: 성공
console.log(xhr.responseText); //서버로 부터 온 응답
} else {
console.log('에러:' + xhr.status); //요청 도중 에러 발생
}
}
xhr.send(); //요청 전송
2. AJAX의 장점
- 서버에서 HTML을 완성하여 보내주지 않아도 웹 페이지를 만들 수 있음
: 이전에는 서버에서 HTML을 완성해서 보내줘야 화면에 렌더링 할수 있었음. AJAX를 사용하면 서버에서 완성된 HTML을 보내 주지 않아도 필요한 데이터를 비동기적으로 가져와 브라우저에서 화면 일부만 업데이터하여 렌더링 할 수 있음
- 표준화된 방법
: 예전에는 브라우저마다 다른 방식으로 AJAX를 사용했으나, XHR이 표준화되면서 부터 브라우저에 상관없이 AJAX를 사용할 수 있게 되었음
- 유저 중심 애플리케이션 개발
: AJAX를 사용하면 필요한 부분만 렌더링하기 때문에 빠르고 더 많은 상호작용이 가능한 애플리케이션을 만들 수 있음
- 더 작은 대역폭
: 이전에는 서버로부터 완성된 HTML을 받아와야 했기 때문에 한 번에 보내야 하는 데이터의 크기가 컸음. 그러나 AJAX에서는 필요한 데이터를 텍스트 형태(JSON, XML 등)로 보내면 되기 때문에 비교적 데이터의 크기가 작음
* 대역폭 : 네트워크 통신 한 번에 보낼 수 있는 데이터의 크기
4. AJAX의 단점
- Search Engine Optimization(SEO)에 불리
: HTML이 비어 있기 때문에 사이트 정보를 긁어가기 어려움
- 뒤로가기 버튼 문제
: 일반적으로 사용자는 뒤로가기 버튼을 누르면 이전 상태로 돌아갈 것이라고 생각하지만, AJAX에서는 이전 상태를 기억하지 않기 때문에 사용자가 의도한 대로 동작하지 않음.
따라서 뒤로가기 기능을 구현하기 위해서는 별도로 History API를 사용해 함
'Network' 카테고리의 다른 글
REST API와 성숙도 모델 (0) | 2022.12.01 |
---|---|
SSR과 CSR (0) | 2022.12.01 |
[HTTP] Responses (0) | 2022.11.30 |
[HTTP] Requests (0) | 2022.11.30 |
[HTTP] Messages (0) | 2022.11.30 |