AJAX 기본 원리 및 XMLHttpRequest 구현
Source
Evernote/IFTTT Feedly/ajax 원리.md
Summary
이 문서는 AJAX(Asynchronous JavaScript and XML)의 기본 동작 원리를 설명하며, 브라우저 호환성을 고려한 XMLHttpRequest 객체 생성 함수와 비동기 HTTP GET 요청을 처리하는 processAjax 함수의 자바스크립트 코드를 제시합니다. AJAX 기술이 Microsoft의 ActiveXObject에서 시작되어 모질라에서 XMLHttpRequest로 발전한 역사적 배경을 간략히 언급하고, jQuery.ajax 사용법 등 후속 연재 내용을 예고합니다.
Key Points
AJAX는 Microsoft의 ActiveXObject에서 기원하여 모질라에서 XMLHttpRequest 객체로 표준화되었습니다.
브라우저 호환성을 위해 window.XMLHttpRequest 존재 여부와 window.ActiveXObject(Msxml2.XMLHTTP, Microsoft.XMLHTTP)를 순차적으로 확인하는 객체 생성 로직이 필요합니다.
비동기 통신은 XMLHttpRequest 객체의 onreadystatechange 이벤트 리스너를 통해 readyState 4(완료) 및 status 200(성공) 시 콜백 함수를 실행하는 방식으로 구현됩니다.
요청 시 URL에 현재 시간(new Date().getTime())을 파라미터로 추가하여 브라우저 캐시 문제를 방지하는 패턴이 사용됩니다.
JavaScript this 키워드 동작 원리
자바스크립트 동작 원리: 엔진, 런타임, 호출 스택
Simple Ajax 예제
Ajax 10주년과 웹 기술의 진화
JavaScript 엔진의 동작 원리 (V8 기준)
비동기적 JavaScript
XXS: 압축된 XML 문서에서의 효율적인 XPath 평가
번역)
Web Workers API 개요 및 기본 사용법
JavaScript Promises: 개념, 용어 및 표준화
자바스크립트에서의 Continuation-passing style (CPS) 소개
NaiveChain: 200 줄 자바스크립트로 구현한 블록체인 기본 구조
Distributed Web Worker 개발 중 Promise 및 이벤트 처리 이슈
Objective-C 함수 포인터와 코드 블럭
requestAnimationFrame 사용법
종성 분리 알고리즘
jQuery 이벤트 핸들링: .on() 사용 권장
C++ Coroutine 의 개념 및 구현 특성
자바스크립트 프로토타입(Prototype) 개념 정리
자바스크립트 객체 더하기 연산의 타입 변환 규칙
배경이 함께 슬라이드하는 웹 슬라이더 구현
웹 브라우저 동작 원리 (2) - 레이아웃 리플로우 최적화
GPU 동작 원리 및 아키텍처 개요
자바스크립트 기반 콘텐츠 숨김의 접근성 처리
자바스크립트 디자인 패턴 - 프록시(Proxy)
자바스크립트 메모리 관리 및 4가지 흔한 메모리 누수 대처법
자바스크립트 배열 메소드 5가지 (indexOf, filter, forEach, map, reduce)
Git remote-tracking branch 개념 및 동작 원리
자바스크립트 메모리 누수 4가지 형태 (외부 링크)
Freemarker 템플릿 상속을 통한 레이아웃 관리
자바스크립트 아키텍처 v0.4
텍스트 교체하기: 5가지 방법 (Swapping Out Text, Five Different Ways)
이펙티브 자바스크립트 소개
자바스크립트 학습 방법론 (2017)
인터넷 동작 원리: WLAN 연결 및 DHCP 프로세스
C 언어 확장 가능한 배열 구현 및 Strict Aliasing 분석
Design Patterns in JavaScript (tcorral)
Distributed Electronic Rights in JavaScript
C++ 싱글 링크드리스트(Singly Linked List) 구현 및 핵심 개념
JavaScript 의 현대적 활용 분야 (2019)
Web Workers: JavaScript 멀티스레딩
JavaScript 성능 향상을 위한 Thread-level Speculation (TLS)
JavaScript 기반 분산 컴퓨팅 고려사항
List.js: HTML 리스트의 검색, 정렬, 필터링을 위한 경량 JavaScript 라이브러리
웹의 불안전한 JavaScript 사용 관행에 대한 측정 연구
ML 기반 번들링: JavaScript 툴링의 미래
북마클릿(Bookmarklet) 정의
웹의 병목 현상: JavaScript
JSWhiz: JavaScript 메모리 누수 정적 분석 도구
CSS :scope 가상 클래스의 용도 및 동작 방식
JavaScript 과잉 조직화 (Over-Organizing) 의 적절성
JavaScript 패키지 매니저의 간략한 역사 (npm, Yarn, pnpm)
C 언어에서 do { } while(0) 문의 용도
일상 프로그래밍을 위한 기본 패턴 (LakTEK)
2017 년 JavaScript 테스트 개요 (Powtoon Engineering)
Didact: 리액트 원리 학습을 위한 DIY 가이드 시리즈 소개
Programming With Nothing (Ruby Proc-only Computing)