Chrome extension 개발 시 chrome.storage 를 사용하여 사용자 데이터에 대한 변경사항을 저장, 검색 및 추적할 수 있다.
chrome storage 는 아래처럼 조금 다른점을 제외하고는 localStrage API 와 거의 동일한 기능을 제공
무튼..! storage 사용을 위해서 manifest 설정은 아래와 같다.
{
"name": "My extension",
...
"permissions": [
"storage"
],
...
}
permissions 에 "storage" 를 추가!
storage.sync 를 사용해서 아래와 같이 사용할 수 있다.
chrome.storage.sync.set({key: value}, function() {
console.log('Value is set to ' + value);
});
chrome.storage.sync.get(['key'], function(result) {
console.log('Value currently is ' + result.key);
});
storage.local 를 사용해서는 아래와 같이 사용할 수 있다.
chrome.storage.local.set({key: value}, function() {
console.log('Value is set to ' + value);
});
chrome.storage.local.get(['key'], function(result) {
console.log('Value currently is ' + result.key);
});
그럼 여기서! sync 와 local 두가지로 set 과 get 을 사용할 수 있는데 뭐가 다를까?!
Chrome 이 오프라인 상태일 때 Chrome 은 데이터를 로컬에 저장한다. 다음에 브라우저가 온라인 상태가 되면 Chrome은 데이터를 동기화 한다.
사용자가 동기화를 비활성화 하더라도 저장, 동기화가 계속 작동한다. 이 경우 storage.local과 동일하게 작동한다.
local 은 기본적으로 최대 5MB 까지 저장 가능한데 manifest 파일의 'unlimitedStorage' 를 permission 에 추가해주면 용량 제한 없이 저장이 가능하다.
반면 sync 는
와 같은 제약사항이 있다. 비교적 storage.local 보다 빡빡한 느낌...😭
Warning!!
chrome storage 에도 localStorage와 마찬가지로 유저 정보나, 기밀 정보를 저장해서는 안된다. (개발자라면 누구나 다 알겠죠..? 그쵸...?😏)
아래처럼 데이터 변경 내용을 추적하려는 경우 변경 시 이벤트리스너를 추가할 수 있다. 스토리지에 변화가 있을 때마다 해당 이벤트가 발생하는 것 이다.
chrome.storage.onChanged.addListener(function(changes, namespace) {
for (var key in changes) {
var storageChange = changes[key];
console.log('Storage key "%s" in namespace "%s" changed. ' +
'Old value was "%s", new value is "%s".',
key,
namespace,
storageChange.oldValue,
storageChange.newValue);
}
});
이외에 storage 관련 메소드들은 StorageArea 에서 확인할 수 있다. (remove 도 있다..!)
안녕하세요!... 크롬 익스텐션 개발중인 주니어 개발자 입니다. 다름이 아니라 로그인 방식 구현에서 구현 방법에 대해 질문 드리고자 합니다..! 보통 다른 확장도구들을 보면 홈페이지에서 로그인을 하면 확장 프로그램은 자동으로 로그인이 된 상태로 켜지는 데 이게 어떻게 구현 되는지 너무나도 궁금합니다..! 로컬 스토리지에 정보를 저장해 새 탭이 열릴때 로컬스토리지 데이터를 크롬 익스텐션 측에서 사용 하는 것인지... 아직 감이 잘 안 잡히네요 알려주신다면 정말 감사하겠습니다!