브라우저에서 웹페이지를 요청하거나 링크를 클릭하면 화면 갱신이 발생한다. 이것은 브라우저와 서버와의 통신에 의한 것이다.
[이미지 출처 : poiemaweb]
[이미지 출처 : poiemaweb]
단순한 web page가 아닌, 보다 애플리케이션다운, web appp의 등장
1. 서버와 자유롭게 통신할 수 있다.
- 서버와 자유롭게 통신을 해서 데이터를 받아오는 XMLHttpRequest(XHR)의 등장
2. 페이지 깜빡임 없이 seamless하게 작동한다.
- 페이지를 새로 받아와서 렌더링 하는것이 아니라 필요한 부분만 변경하기를 원한다.
- JavaScript를 이용해서 DOM을 건드리는 방식을 사용한다.
위의 1,2번을 합쳐서 AJAX(Asynchronous JavaScript and XML)라고 한다.
[이미지 출처 : poiemaweb]
서버에서 자원을 가져오기위해 fetch를 사용한다.
XMLHttpRequest : 요즘도 많이 쓰고있는 기술이지만, 복잡하다.(콜백방식)
function reqListener () {
console.log(this.responseText);
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "http://www.example.org/example.txt");
oReq.send();
jQuery ajax : 복잡하고, 가동성이 좋지 않다(체이닝 방식)
$.ajax({
url: 'http://example.com',
method: 'GET',
dataType: 'json'
})
.done(function(json) {
console.log(json)
})
.fail(function(xhr, status, errorThrown) {
})
.always(function(xhr, status) {
console.log('요청완료')
});
fetch
Fetch API는 네트워크 통신을 포함한 리소스 취득을 위한 인터페이스가 정의되어 있다.
XMLHttpRequest와 비슷한 역할을 하지만 좀더 강력하고 유연한 조작이 가능한 API이다.
```js
fetch('http://example.com') // 서버의 주소
.then(res => res.json()) // json을 javascript object로 바꿔주는 코드
.then(data => {
console.log(data);
})
.catch(err=>{ // error가 catch될 수 있는 함수
console.error(err)
});
```
👨🏫 참고 블로그