데이터 저장 및 검색

JavaScriptBeginner
지금 연습하기

소개

이 Lab 에서는 활기찬 기술 스타트업에서 웹 개발자로 일하며 데이터 지속성 영역으로 진출하려는 의지가 강한 Alex 와 함께합니다. 개인 재무 추적기에서 재무 기록을 추적하고 표시하는 메커니즘을 성공적으로 만든 후, 다음 과제는 이러한 기록이 브라우저 세션 간에 유지되도록 하는 것입니다. 목표는 사용자가 앱으로 돌아와 이전에 입력한 모든 데이터를 그대로 찾을 수 있도록 하여 앱의 사용성과 사용자 만족도를 향상시키는 것입니다. 이 작업은 Alex 에게 웹 스토리지 개념을 소개하며, 특히 localStorage API 를 활용하여 애플리케이션의 상태를 저장하고 검색하는 방법을 배우게 됩니다.

이 Lab 에서는 localStorage를 사용하여 사용자의 브라우저에 데이터를 로컬로 저장하는 방법을 배우고, 이를 통해 웹 애플리케이션에서 데이터 지속성을 구현하는 방법을 배우게 됩니다.

지식 포인트:

  • localStorage 사용법
  • JSON 직렬화 및 역직렬화 (JSON.stringify, JSON.parse)
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 91%입니다.학습자들로부터 99%의 긍정적인 리뷰율을 받았습니다.

LocalStorage

localStorage는 클라이언트 측에 세션 데이터를 저장하는 메커니즘을 제공하며, 일반적으로 5MB 정도의 저장 공간 제한이 있습니다. 세션 스토리지 (sessionStorage) 와 달리, localStorage의 데이터는 세션이 종료되어도 사라지지 않습니다.

데이터 저장

setItem() 메서드를 사용하면 localStorage에 데이터를 저장할 수 있습니다. 이 메서드는 두 개의 매개변수를 받습니다: 키와 값입니다.

예를 들어:

localStorage.setItem("username", "Alice");

데이터 검색

getItem() 메서드는 localStorage에서 데이터를 읽는 데 사용됩니다. 이 메서드는 하나의 매개변수를 받습니다: 키입니다.

예를 들어:

localStorage.setItem("username", "Alice");
let username = localStorage.getItem("username");
console.log(username); // Outputs: Alice
localStorage data storage example
✨ 솔루션 확인 및 연습

LocalStorage 에 기록 저장하기

이 단계에서는 Alex 와 함께 새로운 기록이 추가될 때마다 재무 기록 배열을 localStorage에 저장하는 기능을 구현합니다. 이렇게 하면 사용자의 데이터가 장치에 로컬로 저장되어 브라우저를 닫거나 새로 고친 후에도 사용할 수 있습니다.

script.js의 시작 부분에서 addFinancialRecord 함수를 정의하기 전에, 저장된 기록을 localStorage에서 로드하고 financialRecords 배열을 초기화하기 위해 다음 코드를 추가합니다.

script.js를 수정하여 localStorage에서 기록을 로드합니다:

document.addEventListener("DOMContentLoaded", function () {
  let records = JSON.parse(localStorage.getItem("records")) || [];
});
  • JSON.parse() 정적 메서드는 JSON 문자열을 구문 분석하여 문자열로 설명된 JavaScript 값 또는 객체를 구성합니다. 선택적 reviver 함수를 제공하여 반환되기 전에 결과 객체에 대한 변환을 수행할 수 있습니다.
✨ 솔루션 확인 및 연습

기록 지속성 구현

addRecord 함수에 localStorage에 기록을 저장하는 로직을 추가합니다:

document.addEventListener("DOMContentLoaded", function () {
  const saveRecords = () => {
    localStorage.setItem("records", JSON.stringify(records));
    renderRecords();
  };

  const addRecord = (description, amount, type) => {
    records.push({ description, amount, type });
    saveRecords();
  };
});

이제 새로운 재무 기록이 추가될 때마다 localStorage에 저장되어 데이터 지속성을 보장합니다.

다음으로, 회계의 삭제 기능을 구현해야 합니다. 삭제 기능을 작성하기 전에 새로운 배열 연산 메서드를 배워야 합니다.

✨ 솔루션 확인 및 연습

Splice 메서드 사용법

splice() 메서드는 세 가지 매개변수를 사용할 수 있습니다: 시작 위치, 삭제할 요소의 수, 추가할 새 요소.

구문:

array.splice(start, deleteCount, item1, item2, ...)
  • start: 배열 변경을 시작할 인덱스.
  • deleteCount: 제거할 요소의 수. 제거할 요소가 없으면 0 이어야 합니다.
  • item1, item2, ...: 배열에 추가할 새 요소.

요소 제거

배열에서 요소를 제거하려면 새 요소를 추가할 필요 없이 deleteCount 매개변수를 설정합니다.

let fruits = ["Apple", "Banana", "Cherry", "Date"];
fruits.splice(1, 2); // 인덱스 1 부터 2 개의 요소 제거
console.log(fruits); // 출력: ['Apple', 'Date']
Array splice removing elements

요소 추가

splice()는 또한 요소를 제거하지 않고 배열의 특정 위치에 요소를 추가할 수 있습니다. deleteCount를 0 으로 설정하고 추가할 요소를 지정합니다.

let fruits = ["Apple", "Banana", "Cherry"];
fruits.splice(2, 0, "Date"); // 인덱스 2 에 'Date' 추가
console.log(fruits); // 출력: ['Apple', 'Banana', 'Date', 'Cherry']
Adding elements with splice

요소 교체

deleteCount를 설정하고 새 요소를 추가하면 splice()는 요소를 제거하고 추가하여 효과적으로 교체할 수 있습니다.

let fruits = ["Apple", "Banana", "Cherry"];
fruits.splice(1, 1, "Date"); // 인덱스 1 의 1 개 요소를 'Date'로 교체
console.log(fruits); // 출력: ['Apple', 'Date', 'Cherry']
Replacing array elements with splice

기록 삭제 기능 추가

기록 삭제 기능을 추가합니다.

script.js 파일에 다음 코드를 작성합니다:

document.addEventListener("DOMContentLoaded", function () {
  window.deleteRecord = (index) => {
    records.splice(index, 1);
    saveRecords();
  };
});
✨ 솔루션 확인 및 연습

요약

이 랩에서 당신과 Alex 는 개인 재정 추적기 애플리케이션에서 데이터 지속성 문제를 해결했습니다. localStorage API 사용법을 배우면서 브라우저 세션 간에 재무 기록을 저장하고 검색할 수 있게 되어 사용자 경험이 크게 향상되었습니다. 웹 저장소에 대한 이러한 소개는 더 복잡하고 사용자 친화적인 웹 애플리케이션을 만들 수 있는 새로운 가능성을 열어줍니다.

실습을 통해 JSON.stringify를 사용하여 데이터를 문자열 형식으로 직렬화하여 저장하고, JSON.parse를 사용하여 다시 JavaScript 객체로 역직렬화하여 검색하는 방법을 살펴보았습니다. 이 프로세스는 클라이언트 측 웹 개발에서 애플리케이션 상태를 관리하는 데 매우 중요하며, 향후 웹 개발 프로젝트에 도움이 될 기본적인 기술을 형성합니다.