JavaScript: Руководство по localStorage
Что такое localStorage?
Представьте, что вы заполняете онлайн-форму, а ваше устройство отключается от интернет-соединения. Вы заполнили свой имя и возраст; всё что вам осталось заполнить, это название вашей страны и пол. Вы заполняете их, пока всё ещё отключены от Wi-Fi. В момент повторного подключения к Wi-Fi вы отправляете заполненную форму.
Когда вы ввели название своей страны и пол без подключения к Интернету, заметили ли вы, что снова можете войти в систему, не потеряв информацию? Это localStorage.
Window.localStorage — свойство только для чтения, которое хранит данные в веб-браузере без использования серверного языка программирования. Используется только JavaScript. Эти данные явно хранятся в домене и используемом протоколе. Кроме того, информация хранится в виде ключ-значение в SQLite файле, расположенном в подкаталоге профиля пользователя.
Среди его применений — хранение содержимого корзины покупок, информация о входе на веб-сайт и отслеживание включил ли пользователь тёмный режим. Это связано с тем, что данные, хранящиеся в localStorage, не имеют срока хранения. Кроме того, он продолжает хранить данные после закрытия браузера.
Не рекомендуется использовать localStorage для хранения конфиденциальной информации, поскольку он подвержен атакам с использованием межсайтовых сценариев (XSS) и другим атакам на основе JavaScript. Кроме того, данные localStorage для документа загруженного в сеансе для приватного просмотра
или инкогнито
, очищаются после закрытия последней приватной
вкладки.
Преимущества localStorage
Есть много преимуществ использования localStorage. В начале списка находится его способность сохранять данные даже после закрытия браузера. Далее приведён список некоторых его преимуществ:
- Данные хранятся используя пары ключ-значение.
- Данные не имеют срока хранения.
- Информация хранится на стороне клиента.
- Данные не удаляются автоматически, если не используется JavaScript код.
- Даже после закрытия браузера данные сохраняются.
- Не требуется отправка данных с каждым HTTP-запросом.
- Может хранить до 5 МБ данных.
Недостатки localStorage
Использование localStorage имеет не только преимущества, но и недостатки. Вот некоторые из них:
- Не следует использовать для хранения личной и важной информации, поскольку localStorage подвержен атакам с использованием межсайтовых сценариев (XSS).
- Нет защиты данных, что делает их доступным любому коду.
- Может содержать только строки, но данные можно сериализовать с помощью
JSON.stringify(). - Данные не доступны из разных доменов или поддоменов.
Различия между Cookie и localStorage
Файлы Cookie — это просто данные, хранящиеся в небольших текстовых файлах на вашем устройстве. Они поддерживают состояние пользователя и запоминают информацию о пользователе на всех веб-страницах. Файлы cookie и localStorage имеют общие характеристики, но что их отличает? Вот различия между файлами cookie и localStorage:
| Файлы Cookie | localStorage |
|---|---|
| У данных есть срок хранения | У данных нет срока хранения |
| Файлы Cookie хранятся на сервере | К localStorage доступ только |
| Максимальный объем хранения 4 Кб | Максимальный объём хранения 5 МБ |
| Подвержен XSS и другим атакам | Подвержен XSS и другим атакам |
| Достаточно безопасны | Не безопасно |
Синтаксис localStorage
Синтаксис localStorage в JavaScript:
windows.localStorage;
// или
localStorage;Методы localStorage
У localStorage 4 метода для работы с данными:
setItem(): Этот метод позволяет сохранить данные в localStorage. Он берёт пару ключ-значение и добавляет её в localStorage.localStorage.setItem(key, value);getItem(): Метод считывает данные из localStorage. Принимает в качестве аргумента ключ и возвращает соответствующее значение.let foodItem = localStorage.getItem(key);removeItem(): Удаляет данные из localStorage. Получая ключ — удаляет соответствующую пару ключ-значениеlocalStorage.removeItem(key);clear(): Метод удаляет данные в localStorage для данного домена.localStorage.clear();
Применение localStorage
Лучший способ научиться — написать код и посмотреть, как всё работает. Мы будем использовать четыре метода, чтобы понять, как они работают. Запустите браузер и консоль в Инструментах разработчика (обычно это клавиша F12 или Ctrl + Shift + i).
В консоли введите localStorage и получите текущие сохранённые данные (изначально они пусты).
localStorage;
Storage {length: 0}Введите localStorage.setItem('myKey', 'testValue'). Значение строки testValue сохранится в ключе myKey:
localStorage.setItem('myKey', 'testValue');
undefinedundefined означает, что ни какие данные не были возвращены. Введите localStorage снова и увидите сохранённые данные.
localStorage;
Storage {myKey: 'testValue', length: 1}
myKey: "testValue"
length: 1
>[[Prototype]]: StorageВведите localStorage.getItem('myKey'), и будет возвращено соответствующее значение:
localStorage.getItem('myKey`);
'testValue'Введите localStorage.removeItem('myKey') для удаления соответствующей пары ключ-значение:
localStorage.removeItem('myKey');
undefinedundefined означает, что никакое значение не было возвращено, показывая, что пара ключ-значение была очищена. Для подтверждения введите localStorage. Возвращаемая длинна равна 0.
localStorage;
Storage {length: 0}Введите localStorage.clear() для очистки localStorage вашего домена:
localStorage.clear();
undefinedЗаключение
В этой статье мы рассмотрели localStorage и способы его использования. Подумайте о том, что бы добавить этот инструмент в свой код!