Javascript
📌 localStorage
localStorage 객체 : 지역적으로 사용할 수 있는 저장소 객체
데이터 저장을 할 땐 일반적으로 세션이 큰 걸 활용하지만 간단하게 만들때는 localStorage도 ㄱㅊ
localStorage 객체의 메소드
getItem('키') | 특정한 키로 값을 꺼낼때 |
setItem('키','값) | 특정한 키로 특정한 값을 저장할 때 |
removeItem('키') | 특정한 키로 어떤 값을 제거할 때 |
clear() | 전체 제거 |
하나씩 가져오는 구조
document.addEventListener('DOMContentLoaded', () => {
const p = document.querySelector('p')
const button = document.querySelector('button')
const input = document.querySelector('input')
const key = localStorage.getItem('키')
if (key !== null){
// null 이 아닐때만
p.textContent = `이전 실행 때 마지막 값 : ${key}`
input.value = key
}
// 버튼 누를때마다
button.addEventListener('click', () => {
// 저장된 애들 제거
localStorage.clear()
})
// input에 keyup 될때마다
input.addEventListener('keyup', () => {
// 입력 양식 내부의 값을 저장
localStorage.setItem('키', input.value)
})
}
input의 값을 '키'라는 key로 set하고
'키'로 get하여 하나씩 가져옴
버튼을 누르면 저장된 값 초기화
localStoarge는 key 하나로 관리한다.
일반적으로 저장되어있는 key가 많아지면 getItem setItem 으로 관리하는게 너무 어려워진다.
그래서 하나로 통합
const load = () => {
const data = localStorage.getItem('애플리케이션')
// 데이터가 있으면
if (data != null) {
// split 하고
const [color, message] = data.split(',')
return {
// 컬러는 컬러로, 메세지는 메세지로 리턴
color : color,
message : message
}
else {
// 기본값은 설정
return {
color : 'red',
message : ''
}
}
}
}
const save = (data) => {
localStorage.setItem('애플리케이션', `${data.color}, ${data.message}`)
}
템플릿리터럴 (` `) 로 key값인 애플리케이션 안에 컬러랑 메세지 꾸역꾸역 넣음
그렇게 한 문자열로 setItem 하고
getItem 할때는 그 사이사이 연결되어있는 것(,)을 split로 나누고 객체에 다시 담아서 꺼내는 것...
이렇게 데이터를 주고받으면 , 얘를 못쓰니까 불편함
잘 안쓰는 || 이런걸 써도 누군가에겐 문제가 생김
그래서 그냥 널리 쓰는 데이터 형식을 쓰는게 더 쉽고 다른 누군가도 이해하기 쉬움
그게 바로 JSON (JavaScript Object Notation)
📌 JSON
이런식으로 씀
{
"color" : "red",
"message" : "안뇽!"'
}
1. 객체로 감싸고
2. 키는 문자열만 사용가능
3. 문자열은 반드시 큰따옴표로!
JSON.stringify() | 자바스크립트 객체 → JSON 문자열로 변환 |
JSON.parse() | JSON 문자열 → 자바스크립트 객체로 변환 |
이걸 활용하면 ...
const object = {
color: "red",
message: "안뇽!"
}
console.log( JSON.stringify(object) )
//--==>> {"color":"red","message":"안뇽!"}
const string = JSON.stringify(object)
const other = JSON.parse(string)
console.log(other.color)
//--==>> red
그래서 저장할때!
localStorage.setItem('애플리케이션', `${data.color},${data.message}`)
... 이렇게 악착같이 콤마로 구분해서 문자열로 만들고 저장할 필요 없이
localStorage.setItem('애플리케이션', JSON.stringify(data))
그냥 JSON 객체 활용
그리고 꺼낼때도
const data = localStorage.getItem('애플리케이션')
if (data !== null){
const [color, message] = data.split(',')
return {
color: color,
message: message
}
}
이렇게 꺼낸걸 콤마로 나누고 악착같이 하나하나 키에 다시 넣을 필요 없이
const data = localStorage.getItem('애플리케이션')
if (data !== null){
const [color, message] = data.split(',')
return JSON.parse(data)
}
그냥 JSON 객체로 꺼냄
'🧠 저장 > Javascript' 카테고리의 다른 글
문자열 자르기 삼형제 비교 (substring, slice, split) ✂️ (0) | 2023.04.07 |
---|---|
파일 업로드 확장자 제한, 같은 파일 첨부 막기 (0) | 2022.12.13 |
문서 객체 조작 (0) | 2022.11.14 |
배열과 객체 관련 기초 (0) | 2022.10.27 |
Javascript - 함수 관련 기초 (0) | 2022.10.26 |