Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

nhyunzi

[ 모던 자바스크립트 Deep Dive ] 43 Ajax 본문

카테고리 없음

[ 모던 자바스크립트 Deep Dive ] 43 Ajax

nhyunzi 2025. 1. 20. 04:41

43.1 Ajax란?

  • Ajax(Asynchronous JavaScript And XML)란 자바스크립트를 사용하여 브라우저가 서버에게 비동기 방식으로 데이터를 요청하고 수신하는 프로그래밍 방식이다.
  • Ajax는 브라우저에서 제공하는 Web API인 XMLHttpRequest 객체를 기반으로 동작한다.
  • XMLHttpRequest는 HTTP 비동기 통신을 위한 메서드와 프로퍼티를 제공한다.
  • 이전의 웹페이지는 화면이 전환될 때마다 서버로부터 새로운 HTML을 전송받아 웹페이지 전체를 처음부터 다시 렌더링했다.
  • 이러한 전통적인 방식은 다음과 같은 단점이 있다.
    • 변경 사항이 없는 파일도 매번 다시 전송받기 때문에 불필요한 데이터 통신이 발생한다.
    • 변경할 필요가 없는 부분도 다시 렌더링되어 화면 전환이 일어나면 깜박이는 현상이 발생한다.
    • 통신이 동기적으로 이루어지기 때문에 블로킹 현상이 일어난다.
  • Ajax가 등장하면서 이러한 전통적인 방식의 단점이 해결될 수 있게 되었다.
    • 변경할 부분을 갱신하는 데 필요한 데이터만 전송받아 불필요한 데이터 통신이 발생하지 않는다.
    • 변경할 필요가 없는 부분은 다시 렌더링되지 않기 때문에 화면이 깜박이는 현상이 발생하지 않는다.
    • 통신이 비동기적으로 이루어지기 때문에 블로킹이 발생하지 않는다.
    • 즉, 변경 사항이 있는 데이터만 비동기 방식으로 전송받아 불필요한 렌더링이 일어나지 않고 빠른 퍼포먼스와 부드러운 화면 전환이 가능해졌다.

 

43.2 JSON

  • JSON(JavaScript Object Notation)은 클라이언트와 서버 간의 HTTP 통신을 위한 문자열 데이터 형식이다.
    • 자바스크립트에 종속되지 않아 대부분의 프로그래밍 언어에서 사용할 수 있다.

43.2.1 JSON 표기 방식

  • JSON은 자바스크립트의 객체 리터럴과 유사하게 키와 값으로 구성된 순수한 텍스트다.
    • JSON의 키와 문자열 값은 반드시 큰따옴표(작은따옴표 x)로 묶어야 한다.
{
	"name": "Lee",
    "age": 20,
    "alive": true
}

43.2.2 JSON.stringify

  • JSON.stringify 메서드는 객체나 배열을 JSON 포맷의 문자열로 변환한다.
    • 클라이언트가 서버로 객체를 전송하려면 객체를 문자열화해야 하는데 이를 직렬화라 한다.

객체 -> JSON 변환

const obj = {
	"name": "Lee",
    "age": 20,
    "alive": true
};

// 객체를 JSON 포맷의 문자열로 변환한다.
const json = JSON.stringify(obj);
console.log(typeof json, json);
// string {"name": "Lee","age": 20,"alive": true}

// 객체를 JSON 포맷의 문자열로 변환하면서 들여쓰기 한다.(보기 좋도록)
const prettyJson = JSON.stringify(obj, null, 2);
console.log(typeof prettyJson, prettyJson);
/*
string {
	"name": "Lee",
    "age": 20,
    "alive": true
}
*/

 

배열 -> JSON 변환

const todos = [
	{id: 1, content: 'HTML', completed: false},
    {id: 2, content: 'CSS', completed: true},
    {id: 3, content: 'JavaScript', completed: false},
];

const json = JSON.stringify(todos, null, 2);
console.log(typeof json, json);

/*
string [
	{
    	id: 1, 
        content: 'HTML', 
        completed: false
    },
    {
    	id: 2, 
        content: 'CSS', 
        completed: true
    },
    {
    	id: 3, 
        content: 'JavaScript', 
        completed: false
    },
]
*/

43.2.3 JSON.parse

  • JSON.parse 메서드는 JSON 형식의 문자열을 객체나 배열로 변환한다.
    • (JSON.stringify의 반대 개념!)
  • 서버로부터 클라이언트에 전송된 JSON 데이터는 문자열이다.
  • 이 문자열을 객체로서 사용하려면 JSON 포맷의 문자열을 객체화해야 하는데 이를 역직렬화라 한다.

JSON -> 객체 변환

const obj = {
	"name": "Lee",
    "age": 20,
    "alive": true
};

// 객체를 JSON 형식의 문자열로 변환한다.
const json = JSON.stringify(obj);

// JSON 형식의 문자열을 객체로 변환한다.
const parsed = JSON.parse(json);

 

JSON -> 배열 변환

const todos = [
	{id: 1, content: 'HTML', completed: false},
    {id: 2, content: 'CSS', completed: true},
    {id: 3, content: 'JavaScript', completed: false},
];

// 배열을 JSON 포맷의 문자열로 변환한다.
const json = JSON.stringify(todos, null, 2);

// JSON 포맷의 문자열을 배열로 변환한다.
const pared = JSON.parse(json);