Да, существуют библиотеки, которые могут помочь вам работать как с `chrome.storage`, так и с `localStorage`, облегчая переключение между ними. Одна из таких библиотек — `store.js`, которая предоставляет простой и унифицированный интерфейс для работы с хранилищами.
### Пример использования `store.js`:
1. Установите библиотеку с помощью npm или подключите через CDN:
```bash
npm install store
```
или
```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/store.js/1.4.0/store.min.js"></script>
```
2. Используйте библиотеку в своем коде:
```javascript
// Определите, какое хранилище использовать
const storage = (typeof chrome !== 'undefined' && chrome.storage) ? chrome.storage.local : store;
// Запись данных
storage.setItem('myKey', 'myValue', (result) => {
if (chrome && chrome.storage) {
console.log('Data saved to chrome.storage');
} else {
console.log('Data saved to localStorage');
}
});
// Чтение данных
storage.getItem('myKey', (value) => {
console.log('Retrieved value:', value);
});
```
### Альтернативный подход
Вы также можете создать свой собственный обертку, которая будет абстрагировать обращение к `localStorage` и `chrome.storage`, делая ваш код более удобным.
```javascript
const Storage = {
setItem: function (key, value, callback) {
if (typeof chrome !== 'undefined' && chrome.storage) {
chrome.storage.local.set({ [key]: value }, callback);
} else {
localStorage.setItem(key, value);
if (callback) callback();
}
},
getItem: function (key, callback) {
if (typeof chrome !== 'undefined' && chrome.storage) {
chrome.storage.local.get(key, (result) => {
callback(result[key]);
});
} else {
callback(localStorage.getItem(key));
}
}
};
// Пример использования
Storage.setItem('myKey', 'myValue', () => {
console.log('Data saved');
});
Storage.getItem('myKey', (value) => {
console.log('Retrieved value:', value);
});
```
### Заключение
Использование подобных оберток или библиотек позволяет вам легко переключаться между различными хранилищами, уменьшая количество изменений в вашем коде при тестировании расширений или веб-приложений.