ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS] localStorage와 sessionStorage
    JavaScript 2022. 6. 14. 11:00
    반응형
    SMALL

     

    localStorage와 sessionStorage

    • 웹 스토리지 객체인 localStorage와 sessionStorage는 브라우저 내에 키-값 쌍을 저장할 수 있게 해준다.
    • 둘 다 저장공간. 단, 차이점은 sessionStorage의 경우 세션이 종료되면 저장된 데이터도 함께 사라진다.
    • 대부분의 데이터의 경우 DB에 저장하므로 로컬 및 세션 스토리지가 사용되는 곳은 그리 많지 않다.
      • 글 작성 중간중간에 잃어버리지 않기 위한 임시저장 용도
      • 장바구니나 좋아하는 콘텐츠 등 수시로 변경되는 경우
      • 방문자의 이동경로를 저장하였다가 이동할 경우
      • 그 외 서버에 반드시 저장할 필요가 없는 경우

     

    localStorage sessionStorage
    오리진이 같은 탭, 창 전체에서 공유된다. 오리진이 같은 브러우저 탭, iframe에서 공유된다.
    브라우저를 껏다 켜도 남아있다. 페이지를 새로고침해도 남아있지만, 탭이나 브라우저를 종료하면 사라진다.

     

     

    • localStorage, sessionStorage 객체의 메서드 / 프로퍼티
    # 키-값 쌍을 보관
    setItem(key, value)
    
    # 키에 해당하는 값을 가져옴
    getItem(key)
    
    # 키와 해당 값을 삭제
    removeItem(key)
    
    # 모든것을 삭제
    clear()
    
    # index에 해당하는 키를 받아옴
    key(index)
    
    # 저장된 항목의 갯수를 얻음
    length
    
    # 키 전체를 얻음
    Object.keys

     

     

     

    localStorage 

    • 오리진이 같은 경우 데이터는 모든 탭과 창에서 공유된다.
    • 브라우저나 OS가 재시작하더라도 데이터가 파기되지 않는다.

     

    setItem()  데이터 저장
    # 데이터 저장하는 2가지 방법
    localStorage.setItem('test', '123');
    localStorage.test = '123';

     

     

     

     

    getItem() 데이터 불러오기
    localStorage.test;
    localStorage.getItem('test');
    
    # 전체 localStorage에 담겨있는 값 확인
    localStorage.getItem();

     

     

     

     

    removeItem() 데이터삭제
    # 원하는 값 삭제
    localStorage.removeItem('test');
    
    # 저장된 모든 값 삭제
    localStorage.clear();

     

     

     

    키 순회하기
    • 배열처럼 다루면 전체 키-값을 얻을 수 있다.
    for(let i=0; i<localStorage.length; i++) {
      let key = localStorage.key(i);
      alert(`${key}: ${localStorage.getItem(key)}`);
    }
    • 일반 객체를 다룰 때처럼 for key in localStorage 반복문을 사용해도 전체 키-값을 얻을 수 있습니다.
      단, 이 방법을 사용하면 필요하지 않은 내장 필드(getIrem, setItem)까지 출력됩니다.

     

     

     

     

    문자열만 사용
    • 키와 값은 반드시 문자열이어야 한다.
    • 숫자나 객체 등 다른 자료형을 사용하게 되면 문자열로 자동변환된다.
    localStorage.user = {name: "John"};
    alert(localStorage.user); // [object Object]

     

     

     

     

    • JSON사용하여 객체사용 가능
      • JSON.stringify
      • JSON.parse
    localStorage.user = JSON.stringify({name: "John"});
    
    let user = JSON.parse( localStorage.user );
    alert( user.name ); // John
    
    
    --------------------------------------------------
    let userNm = {
        name : 'amy',
        phone : param.phone
    }
    
    sessionStorage.setItem('user', JSON.stringify(userNm))
    let userNm = JSON.parse(sessionStorage.getItem('user'));

     

     

     

     

    sessionStorage 

    • 세션을 기준으로 데이터가 저장 및 유지되기 때문에 이 객체에 저장된 값은 일시적인 수명을 가지게 된다.
    • 같은 페이지라도 다른 탭에 있으면 다른 곳에 저장된다. 현재 떠있는 탭 내에서만 유지된다.
    • 만약 데이터가 삭제되지 않길 바란다면 localStorage를 사용해야한다. 
    • 단, 세션을 사용한 저장방법은 보안 및 중요한 데이터의 경우 무방비로 노출되는 경우를 피하기 위해서 사용되는 경우가 많다.
    #  domain이란 키(key) 값을 사용하여 해당 텍스트를 저장함
    sessionStorage.setItem("domain", "webisfree.com");
    
    # 키에 저장된 값을 반환. 여기서는 webisfree.com 출력됨
    sessionStorage.getItem("domain");
    
    # domain 키와 데이터 모두 삭제
    sessionStorage.removeItem("domain");
    
    # 저장된 모든 값 삭제
    sessionStorage.clear();

     

     

     

     

     

     

    반응형
    LIST

    댓글

Designed by Tistory.