엘리스에서 자바스크립트와 React를 배우면서 ajax를 많이 들었었으나 정확히 어떤 개념인지 확실하게 몰라서 정리한다.
자바스크립트가 도입되면서 웹은 정적인 것에서 동적인 것으로, 문서에서 애플리케이션으로 발전하기 시작했다.
사람들의 관심사는 웹 페이지를 부분적으로만 변경하고자 하는 것.
왜냐하면 브라우저와 웹 서버가 통신할 때 페이지 전체를 리로드하면 사용자 입장에서는 관심이 분산될 수 밖에 없고, 서버 입장에서도 불필요하게 반복적으로 응답해야 하므로 손실이 크기 때문이다.
이런 문제점을 해결하기 위해 ajax가 도입된다.1
Ajax: 비동기 자바스크립트 Asynchronous JavaScript and XML의 약자, Ajax는 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용하여 화면 전체를 새로 고침하지 않고 변경된 일부 데이터만 로드하는 비동기 처리가 가능
ajax는 리로드 없이 웹서버에게 정보를 요청해서 부분적으로 정보를 갱신해주는 기술로,
ajax 기술의 등장으로 페이지 로드 없이 client-side에서 서버로 요청을 보내 데이터를 처리할 수 있게 됐다.
가능 | 불가능 |
---|---|
Form 기반 상호작용 | 간단한 Form |
Deep tree 이동(navigation) | Basic 이동(navigation) |
검색 자동완성 | 검색 |
빠른 통신과 유저간의 응답 | - |
투표 또는 예/아니오와 같은 관계 없는 scene | - |
데이터를 필터하고 관계 있는 데이터를 통제하는 scene | - |
- | 많은 양의 텍스트를 교체 |
- | 렌더링 통제 |
이름과는 달리 XML 뿐만 아니라 어떤 타입의 데이터든 가져올 수 있다.
과거에는 이것을 사용했으나 현재는 fetch API, axios를 쓰는 경우가 많다.
<기본 구성>
fetch("https://example.com")
.then((response) => response.json())
.then((data) => console.log("Success:", data))
.catch((err) => console.log("Error:", err))
Response { status: 200, ok:true, redirected: false, type: "cors", url:'https://example.com', ...}
axios: 브라우저와 node JS에서 쓸 수 있는 HTTP 라이브러리 기반 Promise
axios는 jQuery처럼 Promise를 통한 ajax 기술의 요약의 일종이다.
fetch | axios |
---|---|
자바스크립트 내장 별도의 import나 설치 불필요 | 설치 필요 |
인터넷 익스플로어 버전에서 지원하지 않는 경우 존재 | 브라우저 호환성이 fetch보다 나음 |
지원하지 않는 기능 존재 | JSON 자동 변환, 응답 시간 초과 설정 기능 지원 |
[1]: 생활 코딩 WEB3-Ajax
[2]: Summary of differences between Axios and ajax
[3]: XMLHttpRequest
[4]: AJAX란 무엇인가 ?