localForage реализует абстракцию над несколькими механизмами клиентского хранилища браузера и предоставляет единый API, скрывающий различия между IndexedDB, WebSQL и localStorage. Одним из ключевых низкоуровневых элементов управления этой абстракцией является выбор и работа с драйверами, определяющими конкретный бэкенд хранения данных.
Внутренняя модель хранения в localForage строится вокруг концепции драйвера. Драйвер — это реализация интерфейса, которая отвечает за фактические операции чтения, записи, удаления и перебора данных в конкретном хранилище браузера.
Свойство driver в конфигурации представляет собой не
«метод», а механизм определения используемых бэкендов. В публичном API
оно связано с:
В контексте localForage корректная сигнатура использования driver выглядит следующим образом:
localforage.driver(driversArray)
Однако важно учитывать, что в публичном API чаще используется
конфигурационная форма через config, а управление
драйверами реализуется через набор связанных методов:
localforage.config({
driver: [/* array of drivers */]
})
и отдельный метод выбора:
localforage.setDriver(driverName)
Хотя driver не является самостоятельной функцией, его
логика реализуется через:
setDriver(driver: string | string[]): Promise<void>
или в расширенной интерпретации:
setDriver(driver: string | string[]): Promise<LocalForage>
driver — строка или массив строк Представляет один или несколько идентификаторов драйверов:
localforage.INDEXEDDBlocalforage.WEBSQLlocalforage.LOCALSTORAGEПри передаче массива система выстраивает приоритетную цепочку выбора.
Метод возвращает Promise, который:
localforage (в
некоторых реализациях);При установке драйвера система выполняет последовательность операций:
Каждый драйвер проходит проверку:
После выбора подходящего драйвера создаётся адаптер:
Активный драйвер подменяет внутренние методы:
getItemsetItemremoveItemcleariterateПоле driver часто используется в конфигурации:
localforage.config({
driver: [
localforage.INDEXEDDB,
localforage.WEBSQL,
localforage.LOCALSTORAGE
]
})
Это означает:
Если ни один драйвер не доступен:
Типичная ошибка:
No available storage method found.
Метод setDriver позволяет переключать backend во время
выполнения:
await localforage.setDriver(localforage.INDEXEDDB);
Особенности:
В TypeScript-ориентированном описании:
type DriverName =
| typeof localforage.INDEXEDDB
| typeof localforage.WEBSQL
| typeof localforage.LOCALSTORAGE;
interface LocalForageDriverSet {
setDriver(driver: DriverName | DriverName[]): Promise<void>;
}
Механизм выбора строится по принципу приоритетного списка:
Это позволяет:
Driver-система опирается на:
Регистрация драйвера происходит на уровне инициализации библиотеки:
localforage.defineDriver(customDriver)
Повторный вызов setDriver:
Важно, что:
Основные ограничения:
Driver является фундаментальным слоем, на котором строится:
Без корректно выбранного driver вся система localForage теряет смысл, поскольку API перестаёт иметь реальный backend для выполнения операций хранения.