Скетч / Сторажэ (Skit / Storage)
Особенности:
Поддерживает: LocalStorage, SessionStorage, Wechat Mini-Program, QQ Mini-Progam, Alipay Mini-Program, Baidu Smart-Program, ByteDance Micro-App и поддерживает пользовательские адаптеры для адаптации к другим средам.
— Поддерживает LocalStorage, SessionStorage, Wechat Mini-Program, QQ Mini-Progam, Alipay Mini-Program, Baidu Smart-Program, ByteDance Micro-App, а также поддерживает пользовательские адаптеры для адаптации к другим средам.
— Поддерживает пространства имён. Данные, хранящиеся в различных пространствах имён, изолированы друг от друга.
— Позволяет устанавливать значения TTL для автоматического истечения срока действия сохранённых ключей.
— Обеспечивает строгую типизацию (на основе JSON).
— Предлагает синхронный и асинхронный API.
— Поддерживает TypeScript.
npm install @skit/storage
/* require */
const $$storage = require('@skit/storage');
/* import */
import $$storage from '@skit/storage';
/* установить строковые данные под ключом */
$$storage.set('key', 'value');
/* установить числовые данные под ключом */
$$storage.set('key', 1);
/* установить объектные данные под ключом */
$$storage.set('key', { value: 'object' });
/* получить и проанализировать данные, сохранённые под ключом */
let val = $$storage.get('key'); // автоматически попытается десериализовать и записать тип при сохранении
/* получить значение по умолчанию, если ключ не существует */
let val = $$storage.get('key', 'default value');
/* проверить, существует ли ключ */
let flag = $$storage.has('key');
/* удалить ключ и его данные */
$$storage.remove('key');
/* очистить все ключи */
$$storage.clear();
/* пакетная установка */
$$storage.setAll({ key1: 'val1', key2: 'val2' });
/* пакетное получение */
let item = $$storage.getAll(['key1', 'key2']); // { key1: 'val1', key2: 'val2' }
/* массовое удаление */
$$storage.removeAll(['key1', 'key2']);
/* получение всех ключей */
$$storge.keys(); // ['key1', 'key2']
/* установка значения и TTL одновременно */
$$storage.set('key', 'val', { ttl: 1000 });
/* установка значения с относительным сроком действия */
$$storage.set('key', 'val');
$$storage.ttl('key', 1000);
/* установка абсолютного срока действия */
$$storage.ttl('key', new Date('2020-12-31 23:59:59'));
/* сделать так, чтобы срок действия никогда не истекал */
$$storage.ttl('key', -1);
/* получить TTL */
$$storage.ttl('key'); // `null` означает, что срок действия не истёк
/* создать два пространства имён */
let storage1 = $$storage.create({ namespace: 'ns1' });
let storage2 = $$storage.create({ namespace: 'ns1' });
/* разрешить ключи с одинаковыми именами в разных пространствах имён */
storage1.set('key', 'val1');
storage2.set('key', 'val2');
storage1.get('key'); // val1
storage2.get('key'); // val2
/* очистить ключи в пространстве имён */
storage1.clear();
/* очистить все ключи */
$$storage.clear();
/* асинхронная установка */
$$storage.setAsync('key', 'val');
/* асинхронное получение */
$$storage.getAsync('key').then((val) => {});
/* асинхронное удаление */
$$storage.removeAsync('key');
Используйте LocalStorage по умолчанию. Если вы хотите переключиться на SessionStorage, пожалуйста:
import $$storage, { SessionStorageAdapter } from '@skit/storage';
const storage = $$storage.create({ adapter: SessionStorageAdapter });
storage.set('key', 'val');
storage.get('key');
Как указано выше:
import $$storage, { MiniprogramAdapter } from '@skit/storage';
const storage = $$storage.create({ adapter: MiniprogramAdapter });
storage.set('key', 'val');
storage.get('key');
Вы можете... 4. Как реализуется стратегия истечения срока действия?
Поскольку базовый уровень не предоставляет способа установить TTL, он фактически записывает время истечения срока действия каждого ключа при записи и вычисляет текущее время при его извлечении, а также удаляет ключ, если срок его действия истёк.
Следует отметить, что описанное поведение является «LAZY», то есть просроченные ключи будут удаляться только при чтении.
Из-за того, что этот метод слишком затратный, по умолчанию он будет удалять данные только лениво в нескольких методах, таких как has()
, get()
и ttl()
. Метод keys()
по умолчанию не будет удалять данные лениво. Если вы хотите вернуть только те ключи, срок действия которых не истёк, вы можете:
/* Только вернуть ключи, которые не истекли */
$$storage.keys({ eliminated: true });
5. Что делать, если я хочу сохранить специальные типы, такие как Function?
Если вам действительно нужны подобные функции, вы можете импортировать другие сторонние сериализаторы и обрабатывать их как обычные строки при доступе к данным.
6. Поддерживает ли это IE?
В каталоге dist можно выбрать несколько версий:
— index.min.js
: сборка с UMD. Поддерживается IE8+.
— index.modern.min.js
: сборка с UMD. Поддерживаются только современные браузеры.
— index.cjs.min.js
: сборка с CommonJS. Поддерживается Node.js 9.0+.
— index.esm.min.js
: сборка с модулями ES.
P.S. В принципе, это также может поддерживать IE6+. Но поскольку в IE6–7 отсутствует функция LocalStorage, вам необходимо написать собственный адаптер на основе IE UserData или полифиллов.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )