Библиотека idb-keyval предназначена для упрощённой работы с IndexedDB, предоставляя простой асинхронный интерфейс для хранения ключ-значение. Для проектов, использующих Node.js или сборщики модулей, таких как Webpack или Vite, подключение осуществляется через npm:
npm install idb-keyval
После установки модуль импортируется в код:
import { set, get, del, clear, keys } from 'idb-keyval';
Пояснение ключевых функций:
set(key, value) – сохраняет значение по указанному
ключу.get(key) – извлекает значение по ключу.del(key) – удаляет значение по ключу.clear() – очищает всю базу данных.keys() – возвращает массив всех ключей в базе.Также доступна возможность создавать собственные хранилища:
import { Store } from 'idb-keyval';
const myStore = new Store('my-database', 'my-store');
После создания пользовательского хранилища все операции можно выполнять в контексте этого хранилища:
set('username', 'Alice', myStore);
get('username', myStore).then(value => console.log(value));
Для использования в браузере без сборщиков модулей библиотеку можно подключить напрямую через CDN. Пример с использованием jsDelivr:
<script type="module">
import { set, get, del, clear, keys } from 'https://cdn.jsdelivr.net/npm/idb-keyval@7/dist/esm/index.js';
set('theme', 'dark');
get('theme').then(value => console.log(value));
</script>
Особенности подключения через CDN:
import.По умолчанию idb-keyval использует хранилище с
именем keyval-store в базе данных keyval-db.
Для разделения данных между разными частями приложения рекомендуется
создавать отдельные хранилища:
import { Store, set, get } from 'idb-keyval';
const settingsStore = new Store('app-settings', 'settings');
set('language', 'ru', settingsStore);
get('language', settingsStore).then(value => console.log(value));
Преимущества собственного хранилища:
Все методы библиотеки возвращают Promise, что
позволяет использовать их с async/await для упрощения
кода:
import { set, get } from 'idb-keyval';
async function saveUser() {
await set('user', { name: 'Alice', age: 30 });
const user = await get('user');
console.log(user); // { name: 'Alice', age: 30 }
}
saveUser();
Особенности работы с асинхронностью:
catch.npm install idb-keyval
import { set, get } from 'idb-keyval';
import { Store } from 'idb-keyval';
const userStore = new Store('user-db', 'users');
await set('token', 'abc123', userStore);
const token = await get('token', userStore);
Эти шаги обеспечивают корректное подключение и инициализацию библиотеки idb-keyval, создавая основу для эффективной работы с локальным хранилищем IndexedDB.