Метод config задаёт базовые параметры работы библиотеки
localForage на уровне глобального экземпляра. Эти настройки определяют
поведение хранилища до момента начала операций чтения и записи, влияя на
выбор драйвера, имя базы данных, имя хранилища и другие системные
параметры.
Именно глобальная конфигурация используется по умолчанию всеми
вызовами localForage, если не создан отдельный экземпляр
через createInstance.
Метод вызывается напрямую на объекте localForage:
localForage.config(options);
Параметр options — это объект, содержащий набор
поддерживаемых конфигурационных ключей.
Метод не возвращает полезного значения и используется исключительно для установки параметров до начала работы с хранилищем.
Параметр name определяет имя базы данных (или
namespace), которое будет использоваться во всех backend-хранилищах.
localForage.config({
name: 'myApp'
});
В зависимости от драйвера это значение интерпретируется по-разному:
Использование уникального name критично для
предотвращения конфликтов между приложениями, работающими в одном
origin.
storeName задаёт имя хранилища внутри базы данных.
localForage.config({
name: 'myApp',
storeName: 'userData'
});
Особенности:
Требования:
Ошибки в storeName часто приводят к исключениям при
инициализации драйвера.
Параметр driver задаёт список допустимых
backend-хранилищ в порядке приоритета.
localForage.config({
driver: [
localForage.INDEXEDDB,
localForage.WEBSQL,
localForage.LOCALSTORAGE
]
});
Доступные значения:
localForage.INDEXEDDBlocalForage.WEBSQLlocalForage.LOCALSTORAGEМеханизм работы:
Такой подход обеспечивает деградацию без потери функциональности в старых окружениях.
Параметр version используется только для IndexedDB.
localForage.config({
name: 'myApp',
version: 2.0
});
При изменении версии:
onupgradeneededВажно учитывать:
Параметр size актуален только для WebSQL.
localForage.config({
size: 50 * 1024 * 1024
});
Задаёт максимальный размер базы данных в байтах.
Особенности:
Метод config влияет исключительно на глобальный
экземпляр localForage.
Это означает:
localForage.setItem, getItem,
removeItem используют эти настройкиconfig до любых асинхронных
операцийКорректный порядок использования:
localForage.config({
name: 'appDB',
storeName: 'cache',
driver: [
localForage.INDEXEDDB,
localForage.LOCALSTORAGE
]
});
localForage.setItem('key', 'value');
Некорректный порядок:
localForage.setItem('key', 'value');
localForage.config({
name: 'appDB'
});
Во втором случае настройки могут не примениться к уже инициализированному драйверу.
Конфигурация напрямую определяет стратегию выбора backend-хранилища.
Алгоритм:
driverЕсли ни один драйвер недоступен:
При использовании IndexedDB параметры name,
storeName и version формируют структуру
базы:
name → имя databaseversion → номер версии schemastoreName → object storeПри изменении version может происходить пересоздание
object store, если обработчик миграции не задан библиотекой или не
поддерживается окружением.
Для localStorage конфигурация упрощается:
name используется как префикс ключейstoreName добавляется как часть составного ключаversion и size игнорируютсяПример фактического ключа:
myApp/userData/someKey
Это важно учитывать при отладке, так как данные остаются в localStorage даже после изменения структуры приложения.
Глобальный config имеет ряд ограничений:
Для изолированных сценариев требуется использование
createInstance, однако глобальный config
остаётся базовой точкой входа.
После выбора драйвера localForage кэширует его внутри текущего контекста:
config не гарантирует смену
драйвераЭто поведение связано с ленивой инициализацией (lazy initialization).
localForage.config({
name: 'projectDB',
storeName: 'sessionStore',
version: 1.0,
size: 20 * 1024 * 1024,
driver: [
localForage.INDEXEDDB,
localForage.WEBSQL,
localForage.LOCALSTORAGE
]
});
Такая конфигурация задаёт:
projectDBsessionStoreЛюбые операции до вызова config могут закрепить драйвер
до изменения настроек.
Использование пробелов, спецсимволов или кириллицы может привести к ошибкам в IndexedDB.
Если передан пустой массив:
localForage.config({
driver: []
});
библиотека не сможет выбрать backend и все операции завершатся ошибкой.
Глобальный config часто используется как точка
централизованной настройки:
В крупных приложениях конфигурация задаётся один раз при bootstrap-фазе, после чего библиотека работает как абстрактный слой над storage-API браузера.
Если config не вызывается:
name = "localforage"storeName = "keyvaluepairs"driver = автоматический выбор всех доступныхТакой режим подходит для простых сценариев, но не обеспечивает изоляции данных между приложениями.