Статьи по JavaScript

Как использовать localStorage и sessionStorage в JavaScript

Введение

LocalStorage и sessionStorage, часть API веб-хранилища, – это два отличных инструмента для локального хранения пар ключ/значение.

Использование localStorage и sessionStorage для хранения данных является альтернативой использованию cookies и имеет ряд преимуществ:

  • Данные сохраняются только локально и не могут быть прочитаны сервером, что устраняет проблему безопасности cookies.
  • Благодаря этому вы сможете сохранить гораздо больше данных (10 МБ для большинства браузеров).
  • Простой синтаксис.

Он также совместим со всеми современными браузерами, поэтому вы можете использовать его уже сегодня без каких-либо проблем.

Cookies по-прежнему полезны, особенно когда речь идет об аутентификации, но бывают случаи, когда localStorage или sessionStorage могут быть лучшей альтернативой.

Предпосылки

Чтобы успешно освоить этот материал, вам понадобится следующее:

  • Последняя версия Node.
  • Базовые знания JavaScript.

Понимание localStorage и sessionStorage

localStorage и sessionStorage практически идентичны и имеют одинаковый API.

Разница в том, что при использовании sessionStorage данные сохраняются только до закрытия окна или вкладки.

При использовании localStorage данные сохраняются до тех пор, пока пользователь вручную не очистит кэш браузера или пока веб-приложение не очистит данные.

В этом руководстве рассматривается localStorage, но синтаксис sessionStorage такой же.

Создание, чтение и обновление записей

Вы можете создавать записи для localStorage с помощью метода setItem().

Метод setItem() принимает два аргумента, ключ и соответствующее значение:

let key = 'Item 1'; localStorage.setItem(key, 'Value');
Code language: JavaScript (javascript)

Чтобы прочитать записи, используйте метод getItem()

Метод getItem() принимает аргумент, который должен быть ключом.

Эта функция вернет соответствующее значение в виде строки:

let myItem = localStorage.getItem(key);
Code language: JavaScript (javascript)

Этот код присваивает myItem значение ‘Value’, которое является соответствующим параметром для ключа.

Обновление элемента выполняется с помощью метода setItem().

Опять же, необходимы два аргумента. Аргумент key будет существующим ключом, а аргумент value – новым значением:

localStorage.setItem(key, 'New Value');
Code language: JavaScript (javascript)

Теперь значением ключа localStorage будет ‘New Value’ вместо ‘Value’.

Вы можете создавать, читать и обновлять записи в объекте localStorage

Вы также можете удалять отдельные записи и удалять все записи в формате localStorage

Удаление записей

Вы можете удалить элемент с помощью метода removeItem()

Метод removeItem() принимает аргумент, который будет ключом объекта localStorage

localStorage.removeItem(key);
Code language: CSS (css)

Вы также можете очистить все элементы в localStorage.

Это можно сделать с помощью метода clear().

Вот как очистить все, что хранится в localStorage:

localStorage.clear();
Code language: CSS (css)

Эти методы дают вам возможность быстро удалять и извлекать элементы из localStorage.

Однако у localStorage есть некоторые ограничения.

И localStorage, и sessionStorage могут хранить только строки.

Чтобы обойти эту проблему, вам нужно использовать методы JSON.

Хранение нестроковых значений с помощью JSON

localStorage может хранить только строковые значения.

Если вы хотите хранить объекты или массивы в качестве значений в localStorage, вы можете использовать JSON.stringify() для преобразования их в строки.

При создании или обновлении пар ключ/значение в localStorage используйте JSON.stringify() с объектом или массивом в качестве аргумента:

let myObj = { name: 'Skip', breed: 'Labrador' }; localStorage.setItem(key, JSON.stringify(myObj));
Code language: JavaScript (javascript)

Хотя myObj является объектом, JSON.stringify(myObj) преобразуется в строку.

Таким образом, myObj теперь является значением localStorage.

Для чтения и возврата строковых значений используйте метод JSON.parse(). JSON.parse() принимает строки JSON и преобразует их в объекты JavaScript. JSON.parse() принимает в качестве аргумента .getItem():

let item = JSON.parse(localStorage.getItem(key));
Code language: JavaScript (javascript)

Теперь элемент устанавливается равным значению ключа.

В приведенном выше фрагменте кода значение ключа было установлено в строковую версию myObj. Использование JSON.parse превращает myObj обратно в объект. Поэтому элемент устанавливается равным myObj как объект, а не как строка.

Возможность преобразовывать массивы и объекты в строки с помощью JSON.stringify и обратно с помощью JSON.parse очень полезна.

Вам также потребуется знать, как проверить, пуст ли localStorage или нет.

Проверяем пуст или нет

В этом шаге вы проверите наличие элементов в localStorage.

Вы можете использовать if, чтобы узнать, содержит ли localStorage элементы или он пуст.

Для этого используем длину localStorage:

if (localStorage.length > 0) { //... }
Code language: JavaScript (javascript)

Если localStorage.length больше 0, то внутри объекта localStorage есть элементы

Добавим else для ситуации отсутствия элементов в localStorage:

if (localStorage.length > 0) { //... } else { //... }
Code language: JavaScript (javascript)

Вы можете включить код для применения в else if и else.

Цикл.

localStorage и sessionStorage не поддерживают метод forEach localStorage через элементы в localStorage, поэтому используйте цикл for.

for (let i = 0; i < localStorage.length; i++){ }
Code language: JavaScript (javascript)

Функция key() принимает целое число в качестве аргумента и возвращает соответствующий ключ.

С помощью for передайте i как целое число для key():

for (let i = 0; i < localStorage.length; i++){ let key = localStorage.key(i); }
Code language: JavaScript (javascript)

Для возврата соответствующего значения ключа используйте getItem:

for (let i = 0; i < localStorage.length; i++){ let key = localStorage.key(i); let value = localStorage.getItem(key); }
Code language: JavaScript (javascript)

Создайте console.log для вывода ключа и значения на экран:

for (let i = 0; i < localStorage.length; i++){ let key = localStorage.key(i); let value = localStorage.getItem(key); console.log(key, value); }
Code language: JavaScript (javascript)

key() очень полезна для итерации по localStorage с помощью циклов for.

Проверка совместимости.

Вы можете протестировать поддержку localStorage, проверив наличие окна в объекте с помощью оператора if.

if (window.localStorage) { //localStorage supported }
Code language: JavaScript (javascript)

Заключение

Для хранения пар ключ/значение можно использовать localStorage или sessionStorage.

Существуют методы, позволяющие взаимодействовать с элементами внутри localStorage.

В этом руководстве вы создали, удалили и обновили записи в localStorage. Вы также преобразовывали данные из объектов и массивов в строки и наоборот, используя методы JSON.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *