ImmortalDB
ImmortalDB — это надёжное хранилище типа «ключ-значение» для браузера.
ImmortalDB является лучшим способом хранения постоянных данных типа «ключ-значение» в браузере. Данные, сохранённые в ImmortalDB, избыточно хранятся в файлах cookie, IndexedDB и LocalStorage и постоянно самовосстанавливаются при удалении или повреждении данных.
Например, очистка файлов cookie является обычным действием пользователя, даже для нетехнических пользователей. И браузеры бесцеремонно удаляют файлы IndexedDB, LocalStorage и/или SessionStorage без предупреждения при нехватке памяти.
ImmortalDB устойчив к таким событиям.
Таким образом, ImmortalDB похож на Evercookie, но:
Как работает ImmortalDB
Когда вы сохраняете пару «ключ-значение» в ImmortalDB, этот ключ и значение сохраняются избыточно в файлах cookies, IndexedDB и хранилищах данных LocalStorage браузера.
При извлечении значения по его ключу ImmortalDB:
Затем ImmortalDB самовосстанавливается: если какое-либо хранилище данных вернуло значение, отличное от определённого правильного значения, или вообще не вернуло никакого значения, правильное значение перезаписывается в это хранилище. Таким образом поддерживается консенсус, надёжность и избыточность.
API
set(key, value)
:import { ImmortalDB } from 'immortal-db'
await ImmortalDB.set('key', 'value')
key
и value
должны быть DOMStrings. ImmortalDB.set(key, value)
также всегда возвращает value
, поэтому его можно связать или внедрить, например:
const countPlusOne = (await ImmortalDB.set('count', numberOfClowns)) + 1
get(key, default=null)
:const value = await ImmortalDB.get('key', default=null)
get()
возвращает значение, связанное с key
, если key
существует. Если key
не существует, возвращается default
. key
должен быть DOMString.
remove(key)
:ImmortalDB.set('hi', 'bonjour')
console.log(await ImmortalDB.get('hi')) // Prints 'bonjour'.
await ImmortalDB.remove('hi')
console.log(await ImmortalDB.get('hi')) // Prints 'null'.
key
должен быть DOMString.
import { ImmortalStorage, CookieStore, LocalStorageStore } from 'immortal-db'
const stores = [await CookieStore(), await LocalStorageStore()]
const immortalDB = new ImmortalStorage(stores)
``` ```
const db = new ImmortalStorage(stores)
await db.set(key, JSON.stringify({1:1}))
По умолчанию ImmortalDB
использует следующие хранилища:
CookieStore
— ключи и значения хранятся в document.cookie
.IndexedDbStore
— ключи и значения хранятся в window.indexedDB
.LocalStorageStore
— ключи и значения хранятся в window.localStorage
.Также доступны дополнительные хранилища:
SessionStorageStore
— ключи и значения хранятся в window.sessionStorage
.Можно легко добавить новые реализации хранилищ; для этого необходимо реализовать асинхронные методы get(key, default)
, set(key, value)
и remove(key)
.
Установить ImmortalDB
с помощью npm просто.
$ npm install immortal-db
Или включите dist/immortal-db[.min].js
и используйте window.ImmortalDB
напрямую.
<html>
<head>
<script src="immortal-db.min.js"></script>
<script>
;(async () => {
const db = ImmortalDB.ImmortalDB
await db.set('hi', 'lolsup')
})()
</script>
</head>
...
</html>
Чтобы протестировать ImmortalDB
, выполните команду:
npm run start
Это запустит сервер разработки webpack и откроет тестовый веб-сайт ImmortalDB
:
После тестирования для создания новых готовых к производству файлов immortal-db.js
и immortal-db.min.js
в папке dist/
выполните команду:
npm run build
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )