Метод createInstance формирует изолированный экземпляр
хранилища с собственной конфигурацией, не влияющей на глобальные
настройки localForage. Каждый экземпляр может использовать
отдельное имя базы, отдельное хранилище и набор драйверов, что позволяет
сегментировать данные внутри одного приложения.
Конфигурация передаётся в виде объекта, где каждое поле управляет поведением создаваемого экземпляра. Все параметры опциональны, но их комбинации определяют, как именно будет организовано хранилище.
const store = localForage.createInstance({
name: 'appName',
storeName: 'keyValueStore',
driver: [localForage.INDEXEDDB, localForage.WEBSQL],
version: 1.0,
size: 4980736,
description: 'Main application storage'
});
Каждое свойство влияет на отдельный аспект работы драйвера и структуры хранилища.
name — имя базы данныхТип: string
Назначение: определяет имя базы данных (или namespace)
в зависимости от драйвера.
name, но разными
storeName используют одну физическую базу.name полностью изолирует данные.storeName — имя
хранилищаТип: string
Назначение: определяет логическое хранилище внутри базы
данных.
name.Использование нескольких storeName внутри одного
name позволяет строить модульную систему хранения:
например, отдельные хранилища для пользователей, кэша и настроек.
driver —
список предпочтительных драйверовТип: Array<string>
Назначение: задаёт порядок предпочтения механизмов
хранения.
localForage.INDEXEDDBlocalForage.WEBSQLlocalForage.LOCALSTORAGEПри инициализации выбирается первый доступный драйвер из списка. Если первый недоступен, выполняется переход к следующему.
driver: [
localForage.INDEXEDDB,
localForage.LOCALSTORAGE
]
Порядок элементов определяет стратегию деградации функциональности.
size —
предполагаемый размер хранилищаТип: number
Назначение: задаёт ожидаемый объём данных (в байтах),
преимущественно для WebSQL.
Используется как метаданные для резервирования пространства и оптимизации работы базы.
version — версия
структуры базыТип: number
Назначение: определяет версию схемы хранилища.
Версия используется для управления изменениями структуры данных без потери совместимости между релизами приложения.
description — описание
базыТип: string
Назначение: текстовое описание назначения
хранилища.
Экземпляр, созданный через createInstance, наследует
глобальные настройки localForage, если параметры не
переопределены.
createInstancelocalForage.configКаждый экземпляр, созданный через createInstance,
полностью изолирован в рамках:
namestoreNamename и
storeNamedriverversiondriver приводит к fallback на доступные
механизмы;storeName может привести к перезаписи данных в
рамках одной базы.IndexedDBname и storeName влияют на структуру
индексов.WebSQLsize и структуре таблиц.localStoragedriver влияет на fallback при перегрузке.Разделение на несколько экземпляров:
Использование разных driver списков:
name + storeName формируют уникальный
идентификатор пространства;driver определяет стратегию доступа;version управляет жизненным циклом структуры;