jQuery, Ajax, JSON
1. jQuery
jQuery는 웹 클라이언트 프로그래밍에서 JavaScript를 보다 쉽고 효율적으로 사용할 수 있도록 돕는 JavaScript 라이브러리입니다.
jQuery 개요
정의 및 특징: jQuery는 자바스크립트 프로그래밍을 단순하게 해 줌으로써 개발자가 적은 코드로도 복잡한 작업을 수행할 수 있도록 돕습니다. 배우기 쉽고, CSS 와 유사한 문법을 사용함(특히 선택자 문법)이 특징입니다.
코드 간결성: JavaScript 코드와 jQuery 코드를 비교했을 때, jQuery가 훨씬 간결한 것을 확인할 수 있습니다.
// JavaScript
document.getElementById("target").innerHTML = "안녕하세요?";
// jQuery
$("#target").html("안녕하세요?");
주요 기능: jQuery를 사용하면 다음과 같은 작업을 수행할 수 있습니다.
- HTML 문서의 특정 요소에 접근하고 HTML 콘텐츠를 변경합니다
- 이벤트를 처리하고, 페이지 상의 콘텐츠에 애니메이션을 적용합니다
- 서버로부터 새로운 콘텐츠 가져오기(Ajax, JSON)가 가능합니다
- 브라우저의 종류나 버전에 무관하게 사용 가능하여 호환성이 뛰어납니다
동작 방식: jQuery는 브라우저 메모리에 저장된 웹 페이지의 DOM을 변경함으로써 작동하며, 이는 HTML 문서와 CSS 파일을 변 경하는 것이 아님을 의미합니다.
역사 및 인기: 2006년 존 레식(John Resig)이 발표했으며, 현재 가장 인기 있는 자바스크립트 라이브러리로, 많이 방문되는 사이트의 65%가 jQuery를 사용함이라고 명시되어 있습니다. MIT 라이선스 하에 배포되는 자유 오픈 소프트웨어입니다.
사용 방법:
-
다운로드: jQuery.com에서 파일을 다운로드하여 서버에 저장하는 방식 (
jquery-3.9.1.min.js와 같은 파일). uncompressed 버전은 테스트 및 디버깅용이며, minified 버전은 압축되어 더 빠르게 실행됩니다. -
온라인 포함(CDN): 구글이나 마이크로소프트와 같은 공개 서버의 CDN(Content Delivery Network)을 통해 온라인으로 포함하는 방법입니다. 사용자와 가장 가까운 서버를 자동으로 찾아주어 효율적입니다.
<script src="http://code.jquery.com/jquery-3.4.1.js"></script>
jQuery 문장 구조
jQuery 문장은 기본적으로 $(선택자).메서드(); 형태로 구성됩니다.
$ 기호: jQuery라는 의미를 가지며, $(...) 안에 선택자를 넣어 원하는 요소를 선택하고 조작할 수 있습니다.
선택자: HTML 요소를 선택할 때 사용되며, CSS 표기법 사용이 특징입니다.
- 일반적인 선택자:
$("p")(모든<p>요소),$(".class명")(해당 클래스의 요소),$("#id명")(해당 ID의 요소) - 그 외 선택자:
$("*")(모든 요소),$(this)(현재 요소),$("p.myClass"),$("p:first"),$("div span"),$(":button")등 다양한 CSS 선택자를 활용할 수 있습니다
jQuery 동작 방식: HTML 문서가 완전히 로드된 후에 jQuery 동작하도록 함을 위해 $(document).ready(function() { ... }); 구문을 사용합니다. 이는 DOM이 로딩되어 준비가 되면 작업을 시작하도록 합니다.
jQuery 이벤트 처리
jQuery는 다양한 이벤트 처리 기능을 제공하여 사용자와의 상호작용을 구현합니다.
중요한 이벤트 종류:
- 키보드:
keypress,keydown,keyup - 마우스:
click,dblclick,mouseenter,mouseleave,mousedown,mouseup - 화면:
resize,load,unload,scroll - 변화:
submit,change - 포커스:
focus,blur
이벤트 메서드 구문: $(selector).event(function() { ... }); 형태로 작성됩니다.
$("#button1").click(function () {
$("#box").show();
});
이벤트 등록 방법:
- 정식 방법:
$(selector).bind('event', function() { ... });(동적으로 추가된 요소에 유용) - 단축 메서드 방법:
$(selector).event(function() { ... });(DOM 트리에 요소가 생성되어 있을 때만 가능)
이벤트 처리 함수: 모든 이벤트 처리 함수는 event 객체를 전달받으며, 이 객체는 pageX, pageY (마우스 위치), type (이벤트 종류), which (눌러진 마우스 버튼이나 키) 등의 유용한 속성을 가집니다.
2. jQuery의 응용
jQuery는 애니메이션, DOM 수정, CSS 조작 등 다양한 웹 페이지 요소 조작에 활용됩니다.
jQuery 애니메이션
웹 페이지 요소에 시각적 효과를 부여하여 사용자 경험을 향상시킵니다.
요소 보이기/감추기:
show(): 선택된 요소를 화면에 표시합니다hide(): 선택된 요소를 화면에서 감춥니다toggle(): 요소가 감추어져 있으면 표시하고, 표시되어 있으면 감춥니다
이 메서드들은 duration (지속시간) 및 complete (완료 후 호출 메서드) 인수를 가질 수 있습니다.
애니메이션 메서드:
animate(): 가장 일반적인 애니메이션을 작성할 때 사용됨.properties(CSS 속성 및 목표값),duration,easing(효과 지정),complete인수를 가집니다stop(): 애니메이션을 중단합니다fadeIn()/fadeOut(): 요소를 천천히 등장/퇴장시킵니다slideUp()/slideDown(): 요소를 밀어 올리거나 내립니다
메서드 체이닝: 동일한 요소에 대한 여러 개의 메서드를 하나로 연결해서 실행하는 것입니다. 이는 코드의 가독성과 효율성을 높입니다.
$("#img").show().fadeOut("slow").slideDown("slow");
jQuery DOM 수정
HTML 문서의 DOM(Document Object Model)을 동적으로 조작합니다.
주요 작업: 요소의 내용, 속성, 스타일을 추출 및 변경하고, 요소를 추가 및 삭제하는 작업을 수행합니다.
내용 추출 및 변경:
text(): 선택된 요소의 텍스트를 반환하거나 변경합니다html(): 선택된 요소의 HTML 태그가 포함된 콘텐츠를 반환하거나 변경합니다
입력 필드 값 추출:
val(): 입력 요소(예:<input>) 안에 포함된 값을 읽어옵니다
요소 속성 추출 및 변경:
attr(): 선택된 요소의 속성값을 추출하거나 설정합니다
$(selector).attr(attributeName);
$(selector).attr(attributeName, value);
DOM 요소 추가:
append(): 선택된 요소의 끝에 새로운 콘텐츠를 자식 노드로 추가합니다prepend(): 선택된 요소의 처음에 새로운 콘텐츠를 자식 노드로 추가합니다after(): 선택된 요소의 뒤에 콘텐츠를 삽입합니다before(): 선택된 요소의 앞에 콘텐츠를 삽입합니다
DOM 요소 삭제:
remove(): 선택된 요소와 그 자식 요소를 삭제함empty(): 선택된 요소의 자식 요소를 삭제함, 선택된 요소는 그대로 둡니다
jQuery CSS 조작
HTML 요소의 스타일을 동적으로 제어합니다.
스타일 관련 메서드:
css(): 선택된 요소의 스타일 속성을 설정하거나 반환합니다
$("#target").css("color");
$("#target").css("color", "blue");
addClass(): 선택된 요소에 하나 이상의 클래스를 추가합니다removeClass(): 선택된 요소로부터 하나 이상의 클래스를 삭제합니다
요소 크기 검색:
width(),height(): 각각 요소의 가로, 세로 크기를 반환합니다 (패딩, 경계, 마진은 포함되지 않음)$(window).width(): 브라우저 뷰포트의 가로 크기$(document).width(): HTML 문서의 가로 크기
3. Ajax와 JSON
Ajax와 JSON은 웹 애플리케이션에서 서버와 비동기적으로 데이터를 교환하는 데 사용되는 핵심 기술입니다.
Ajax 개요
Ajax(Asynchronous JavaScript and XML)는 서버와 데이터를 비동기적으로 교환하는 기술 중 하나입니다.
정의 및 특징: Ajax는 전체 페이지를 다시 적재하지 않고, 웹 페이지의 일부를 업데이트할 수 있음으로써 빠르고 대화형 웹 페이지를 만드는 데 유용합니다.
비동기적 처리: 데이터를 주고받을 때 웹 페이지의 다른 동작을 방해하지 않습니다. 마우스로 드래그하면 지도가 연속적으로 표시됨이나 키보드로 입력하면 이어질 단어 추천과 같은 기능이 Ajax를 활용한 예시입니다.
새로운 언어가 아님: Ajax는 기존의 HTML, CSS, JavaScript, DOM, XML 및 XMLHttpRequest 객체와 같은 기존의 표준 기술을 사용함.
Ajax와 기존 방법 비교:
- 기존 웹 브라우저: 서버로부터 페이지 단위로만 데이터를 받을 수 있었습니다
- Ajax: XML 파일 조각 단위로 받을 수 있음을 통해, JavaScript가 이 조각들을 처리하여 페이지 일부를 동적으로 업데이트할 수 있습니다
Ajax의 동작 원리:
- 클라이언트에서 사용자 이벤트 발생 시 JavaScript 함수 호출 및 XMLHttpRequest 객체 인스턴스 생성
- XMLHttpRequest 객체가 XML 메시지를 구성하여 웹 서버로 비동기적으로 전송
- XMLHttpRequest 객체가 웹 서버로부터 응답 XML 메시지를 수신
- 반환된 메시지를 파싱하여 DOM 객체 업데이트
Ajax 예제: 사용자가 버튼을 클릭하면 XMLHttpRequest 객체를 통해 서버(cd3_1_testfile.txt)로부터 데이터를 비동기적으로 받아와 웹 페이지의 특정 div 요소에 표시하는 예시가 제공됩니다.
jQuery의 Ajax
jQuery는 Ajax 기능을 보다 간편하게 사용할 수 있도록 다양한 메서드를 제공합니다.
ajax() 메서드: 가장 일반적인 Ajax 요청 메서드로, GET 또는 POST 방식을 사용하여 텍스트, HTML, XML, JSON 등의 데이터를 요청하고 응답 데이터를 처리합니다. 상세 설 정(URL, 데이터, 타임아웃, 데이터 타입, 콜백 함수 등)이 가능합니다.
GET 요청:
$.get(URL, callback);: 서버로부터 로드를 원하는 URL과 완료 후 호출될 콜백 함수를 지정합니다$.get(URL, data);: 서버에 데이터를 전송하고 결과를 무시할 때 사용됩니다.done()메서드와 함께 사용하여 데이터 수신 후 처리가 가능합니다
POST 요청:
$.post(URL, data, callback);: 서버에 데이터를 요청하며, data는 "key:value" 형태의 쿼리 문자열로 전송됩니다
load() 메서드: 서버에 데이터를 요청해서 응답된 데이터를 선택된 요소에 넣음으로써 서버로부터 데이터를 가져오는 가장 간단한 방법입니다. $.get()과 유사하게 작동합니다.
$(selector).load(URL, data, callback);
JSON (JavaScript Object Notation)
JSON은 텍스트 기반의 데이터 교환 형식으로, 웹에서 데이터를 주고받는 데 널리 사용됩니다.
정의 및 특징: 사람과 컴퓨터가 쉽게 읽을 수 있음이 특징입니다. JavaScript 언어의 배열과 객체 표현 방식에 기반을 둡니다.
언어 및 플랫폼 독립적: JSON은 자바스크립트에서 유래되었지만 언어와 플랫폼에 독립적이어서 C++, C#, Java, Python 등 다양한 언어에서 사용 가능합니다.
인기: 서로 다른 언어와 시스템 간의 데이터 교환에 이상적이며, 웹 서버와 웹 애플리케이션 사이에서 많이 사용됨으로써 XML을 대체합니다.
JSON과 XML 비교:
공통점: 일반 텍스트 형식, 계층적 데이터 구성 가능, 프로그램으로 쉽게 구문 분석 가능
차이점:
- JSON은 종료 태그를 써줄 필요가 없음 (더 간결함)
- JSON이 좀 더 간결하므로, 빠르게 읽고 쓰는 것이 가능함
- JSON은 자바스크립트에서
eval()을 사용해 쉽게 파싱할 수 있음 - JSON은 배열도 사용할 수 있음
JSON의 구문: "이름:값" 쌍으로 기록되며, 이 쌍들을 묶는 방법으로 JavaScript의 객체와 배열을 사용합니다.
객체 (object): 이름:값 형태를 갖는 쌍의 집합으로, 중괄호 {}를 사용합니다. 이름은 문자열이며, 값은 자료형, 배열 또는 객체가 될 수 있습니다. 각 쌍은 쉼표(,)로 구별됩니다. 순서는 의미가 없습니다.
{
"name": "Hong",
"age": "21"
}
배열 (array): 값의 순서화된 리스트로, 대괄호 []를 사용합니다. 배열의 각 요소는 기본 자료형, 배열, 객체가 될 수 있으며, 쉼표(,)로 구별됩니다. 순서에는 의미가 있습니다.
[
{
"name": "Hong",
"age": "21"
},
{
"name": "Kim",
"age": "22"
}
]
JSON의 처리: 주로 웹 서버에서 JSON 데이터를 가져와 애플리케이션에서 JavaScript 객체로 변환하여 웹 페이지에 표시합니다.
처리 방법:
- JavaScript의
eval()메서드로 처리: 편리하지만 악성 코드 유입 가능성이 있음 - JSON 전용 파서로 처리 (
JSON.parse()): 텍스트만 인식하므로 안전하고 빠릅니다 (권장)