todolist를 웹브라우저가 닫혀도 저장할 수 있도록 하고 싶었다.
DB 사용이 아닌 Cookie와 Local Storage 활용할것이다.
쇼핑몰 사이트를 방문하여 이것저것 보았을 때, 하단에 최근 본 상품이라는 것을 본 적이 있을 것이다. 또한 팝업창에 오늘 하루 안보기 체크와 같은 정보들은 모두 쿠키에 저장되어 관리된다.
document.cookie = "cookie-js"
기존에 있던 cookie에 key: cookie, value: js 쌍으로 저장이 된다.

document.cookie
위의 코드를 통해 cookie에 저장된 값들을 읽어올 수 있다.
각 쿠키는 ;로 구분되어 있어서 split로 쪼개고 다시한번 key.value에 맞게 쪼개서 적절히 사용하면 된다.

Cookie에 유효기간을 지정하지 않으면 브라우저가 종료되면 쿠키값을 사라진다.
1) 그리니치 표준시(GMT)를 사용하여 유효기간을 넣는다.
document.cookie = "cookie=js; expires=Wed, 18 Aug 2021 20:00:00 GMT";
위와 같이 직접 넣어줄 수도 있지만, 보통 오늘 날짜 기준으로 며칠 뒤까지 유효기간을 설정하는 것이 보통이다.
let data = new Date();
date.setDate(date.getDate() + 1);
document.cookie = `cookie=js expires=${date.toGMTString()}`;
data.getDate()로 오늘 날짜를 받아와 +1 (하루)를 더 해주고 그것을 setDate로 저장해주고 템플릿 리터럴을 이용해서 넣어주면 된다.
2) max-age로 설정
설정된 값 기준으로 유효기간 설정
document.cookie = "cookie-js; max-age-3600";
max-age의 단위는 1초이다. 3600은 1시간을 의미한다. 이렇게 직접 시간을 지정해서 설정할 수도 있다.
window.localStorage.cookie = "js";
window.localStorage[cookie] = "js";
window.localStorage.setItem("cookie","js");
setItem을 이용하는 것을 권장한다.
나머지는 특정한 상황시 내장함수를 덮어씌우는 경우를 발생하기 때문이다.
또한 Local Storage는 string만 넣을 수 있다. 그래서 만약 객체를 넣고 싶으면 JSON.stringify로 넣고, JSON.parse로 가져온다.

localStorage.getItem("cookie"); //불러오기
localStorage.removeItem("cookie") //삭제하기
localStorage.clear() //전체삭제
위 같은 방법으로 간단한 프로젝트 시 Client Side 에서 데이터를 저장하여 활동하면 된다.
출처: https://ghost4551.tistory.com/132 [프론트엔드 개발자의 기록 공간:티스토리]