Объяснение веб-хранилища — как использовать localStorage и sessionStorage в проектах JavaScript
Веб-хранилище — это то, что браузеры API JavaScript предоставляют для локального и безопасного хранения данных в браузере пользователя.
Сеансовое и локальное хранилище — два основных типа веб-хранилища. Они похожи на обычные объекты свойств, но сохраняются (не исчезают) при перезагрузке веб-страницы.
Цель этой статьи — показать вам, как именно работают два объекта хранения в JavaScript. Мы также будем использовать упражнение со списком дел, чтобы попрактиковаться в использовании веб-хранилища в проекте веб-приложения.
Что такое объект хранения сеанса?
Объект хранения сеанса (window.sessionStorage
) хранит данные, которые сохраняются только для одного сеанса открытой вкладки.
Другими словами, все, что будет сохранено в объекте window.sessionStorage
, не исчезнет при перезагрузке веб-страницы. Вместо этого компьютер удалит сохраненные данные только тогда, когда пользователи закроют вкладку или окно браузера.
Обратите внимание на следующее:
- Данные, хранящиеся в хранилище сеансов, относятся к каждому источнику и каждому экземпляру. Другими словами,
http://freecodecamp.com
объектsessionStorage
отличается отhttps://freecodecamp.com
объектsessionStorage
, потому что два источника используют разные схемы (http
иhttps
). - Для каждого экземпляра означает для каждого окна или для каждой вкладки. Другими словами, срок службы объекта
sessionStorage
истекает, как только пользователи закрывают экземпляр (окно или вкладку). - Браузеры создают уникальный сеанс просмотра страницы для каждой новой вкладки или окна. Таким образом, пользователи могут запускать несколько экземпляров приложения, не вмешиваясь в хранилище сеансов каждого экземпляра. (Примечание: Файлы cookie плохо поддерживают запуск нескольких экземпляров одного и того же приложения. Такая попытка может привести к ошибкам, таким как двойная запись бронирований).
- Хранилище сеансов - это свойство глобального объекта
Window
. Таким образом,sessionStorage.setItem()
эквивалентенwindow.sessionStorage.setItem()
.
Что такое объект локального хранилища?
Объект локального хранилища (window.localStorage
) хранит данные, которые сохраняются даже тогда, когда пользователи закрывают вкладку (или окно) своего браузера.
Другими словами, все, что будет сохранено в объекте window.localStorage
не исчезнет во время перезагрузки или повторного открытия веб-страницы, а также когда пользователи закроют свои браузеры. У этих данных нет срока годности. Браузеры никогда не очищают их автоматически.
Компьютер удалит содержимое объекта window.localStorage
только в следующих случаях:
- Когда содержимое очищается с помощью JavaScript
- Когда кэш браузера будет очищен
Обратите внимание на следующее:
- Предел хранилища объекта
window.localStorage
больше, чем уwindow.sessionStorage
. - Данные, хранящиеся в локальном хранилище, относятся к каждому источнику. Другими словами, объект
localStorage
http://freecodecamp.com
отличается от объектаlocalStorage
https://freecodecamp.com
, поскольку два источника используют разные схемы (http
иhttps
). - Существуют несоответствия в том, как браузеры обрабатывают локальное хранилище документов, не передаваемых с веб-сервера (например, страницы с
file
: схема URL). Таким образом, объектlocalStorage
может вести себя по-разному в разных браузерах при использовании с URL-адресами, отличными от HTTP, напримерfile:///document/on/users/local/system.html
. - Локальное хранилище — это свойство глобального объекта
Window
. Таким образом,localStorage.setItem()
эквивалентенwindow.localStorage.setItem()
.
Как получить доступ к объектам Session Storage и Local Storage?
Вы можете получить доступ к двум веб-хранилищам следующим образом:
- Используя ту же технику, что и для доступа к обычным объектам JavaScript.
- Использование встроенных интерфейсов веб-хранилища
Например, рассмотрим фрагмент ниже:
sessionStorage.bestColor = "Green";
sessionStorage["bestColor"] = "Green";
sessionStorage.setItem("bestColor", "Green");
Три приведенных выше оператора делают одно и то же — они устанавливают значение bestColor
. Но рекомендуется использовать третью строку, поскольку она использует метод setItem()
веб-хранилища.
Совет: вам следует предпочесть использовать встроенные интерфейсы веб-хранилища, чтобы избежать ошибок, связанных с использованием объектов в качестве хранилищ ключей/значений.
Давайте подробнее обсудим встроенные интерфейсы веб-хранилища ниже.
Каковы встроенные интерфейсы Web Storage?
Встроенные интерфейсы веб-хранилища — это рекомендуемые инструменты для чтения и управления объектами sessionStorage
и localStorage
браузера.
Шесть (6) встроенных интерфейсов:
setItem()
key()
getItem()
length
removeItem()
clear()
Давайте теперь обсудим каждый из них.
Что такое метод setItem() веб-хранилища?
Метод setItem()
сохраняет свои аргументы ключа и значения внутри указанного объекта веб-хранилища.
Синтаксис метода setItem()
setItem()
принимает два обязательных аргумента. Вот синтаксис:
webStorageObject.setItem(key, value);
webStorageObject
представляет объект хранилища (localStorage
илиsessionStorage
), которым вы хотите манипулировать.key
— это первый аргумент, принимаемыйsetItem()
. Это обязательный строковый аргумент, представляющий имя свойства веб-хранилища, которое вы хотите создать или обновить.value
— это второй аргумент, принимаемыйsetItem()
. Это обязательный строковый аргумент, определяющий значениеkey
, который вы создаете или обновляете.
Примечание:Аргументыkey
иvalue
всегда являются строками.
Предположим, вы предоставляете целое число в качествеkey
илиvalue
. В этом случае браузеры автоматически преобразуют их в строки.setItem()
может отображать сообщение об ошибке, если объект хранилища заполнен.
Пример 1: Как хранить данные в объекте session storage
- Вызовите метод
setItem()
объектаsessionStorage
. - Укажите имя и значение данных, которые вы хотите сохранить.
// Store color: "Pink" inside the browser's session storage object:
sessionStorage.setItem("color", "Pink");
// Log the session storage object to the console:
console.log(sessionStorage);
// The invocation above will return:
{color: "Pink"}
Попробуйте отредактировать это
Примечание. Хранилище сеансов вашего браузера может содержать дополнительные данные, если он уже использует объект хранилища для хранения информации.
Пример 2. Как хранить данные в объекте local storage
- Вызовите метод
setItem()
localStorage
. - Укажите имя и значение данных, которые вы хотите сохранить.
// Store color: "Pink" inside the browser's local storage object:
localStorage.setItem("color", "Pink");
// Log the local storage object to the console:
console.log(localStorage);
// The invocation above will return:
{color: "Pink"}
Попробуйте отредактировать это
Примечание:Локальное хранилище вашего браузера может содержать дополнительные данные, если он уже использует объект хранилища для хранения информации.
Лучше всего сериализовать объекты перед их сохранением в локальном или сеансовом хранилище. В противном случае компьютер сохранит объект как"[object Object]"
.
Пример 3. Браузеры используют "[object Object]" для несериализованных объектов в веб-хранилище
// Store myBio object inside the browser's session storage object:
sessionStorage.setItem("myBio", { name: "Oluwatobi" });
// Log the session storage object to the console:
console.log(sessionStorage);
// The invocation above will return:
{myBio: "[object Object]", length: 1}
Попробуйте отредактировать это
Вы можете видеть, что компьютер сохранил объект как "[object Object]"
, потому что мы не сериализовали его.
Пример 4. Как хранить сериализованные объекты в веб-хранилище
// Store myBio object inside the browser's session storage object:
sessionStorage.setItem("myBio", JSON.stringify({ name: "Oluwatobi" }));
// Log the session storage object to the console:
console.log(sessionStorage);
// The invocation above will return:
{myBio: '{"name":"Oluwatobi"}', length: 1}
Попробуйте отредактировать это
Мы использовали JSON.stringify()
для преобразования объекта в JSON перед сохранением его в веб-хранилище.
Что такое метод key() веб-хранилища?
Метод key()
извлекает имя указанного элемента веб-хранилища (ключ).
Синтаксис метода key()
key()
принимает один обязательный аргумент. Вот синтаксис:
webStorageObject.key(index);
webStorageObject
представляет объект хранилища (localStorage
илиsessionStorage
), ключ которого вы хотите получить.index
является обязательным аргументом. Это целое число, определяющее индекс элемента, ключ которого вы хотите получить.
Пример 1: Как получить имя элемента в объекте хранения сеанса
- Вызовите метод
key()
объектаsessionStorage
. - Укажите индекс элемента, имя которого вы хотите получить.
// Store carColor: "Pink" inside the browser's session storage object:
sessionStorage.setItem("carColor", "Pink");
// Store pcColor: "Yellow" inside the session storage object:
sessionStorage.setItem("pcColor", "Yellow");
// Store laptopColor: "White" inside the session storage object:
sessionStorage.setItem("laptopColor", "White");
// Get the name of the item at index 1:
sessionStorage.key(1);
Попробуйте отредактировать это
Важно: Пользовательский агент определяет порядок элементов в хранилище сеанса. Другими словами, вывод функцииkey()
может варьироваться в зависимости от того, как пользовательский агент упорядочивает элементы веб-хранилища. Поэтому вам не следует полагаться наkey()
для возврата постоянного значения.
Пример 2. Как получить имя элемента в объекте локального хранилища
- Вызовите метод
key()
localStorage
. - Укажите индекс элемента, имя которого вы хотите получить.
// Store carColor: "Pink" inside the browser's local storage object:
localStorage.setItem("carColor", "Pink");
// Store pcColor: "Yellow" inside the local storage object:
localStorage.setItem("pcColor", "Yellow");
// Store laptopColor: "White" inside the local storage object:
localStorage.setItem("laptopColor", "White");
// Get the name of the item at index 1:
localStorage.key(1);
Попробуйте отредактировать это
Важно: Пользовательский агент определяет порядок элементов в локальном хранилище. Другими словами, вывод функцииkey()
может варьироваться в зависимости от того, как пользовательский агент упорядочивает элементы веб-хранилища. Поэтому вам не следует полагаться наkey()
для возврата постоянного значения.
Что такое метод getItem() веб-хранилища?
Метод getItem()
извлекает значение указанного элемента веб-хранилища.
Синтаксис метода getItem()
getItem()
принимает один обязательный аргумент. Вот синтаксис:
webStorageObject.getItem(key);
webStorageObject
представляет объект хранилища (localStorage
илиsessionStorage
), элемент которого вы хотите получить.key
является обязательным аргументом. Это строка, определяющая имя свойства веб-хранилища, значение которого вы хотите получить.
Пример 1: Как получить данные из объекта session storage
- Вызовите метод
getItem()
классаsessionStorage
. - Укажите название данных, которые вы хотите получить.
// Store color: "Pink" inside the browser's session storage object:
sessionStorage.setItem("color", "Pink");
// Get color's value from the session storage:
sessionStorage.getItem("color");
// The invocation above will return:
"Pink"
Попробуйте отредактировать это
Пример 2: Как получить данные из объекта local storage
- Вызовите метод
getItem()
localStorage
. - Укажите название данных, которые вы хотите получить.
// Store color: "Pink" inside the browser's local storage object:
localStorage.setItem("color", "Pink");
// Get color's value from the local storage:
localStorage.getItem("color");
// The invocation above will return:
"Pink"
Попробуйте отредактировать это
Примечание. МетодgetItem()
вернет значениеnull
, если его аргумент не существует в указанном веб-хранилище.
Что такое свойство length веб-хранилища?
Свойство length
возвращает количество свойств в указанном веб-хранилище.
Синтаксис свойства length
Вот синтаксис length
:
webStorageObject.length;
webStorageObject
представляет объект хранилища (localStorage
или sessionStorage
), длину которого вы хотите проверить.
Пример 1. Как проверить количество элементов в объекте хранения сеанса
Вызовите свойство length
sessionStorage
.
// Store carColor: "Pink" inside the browser's session storage object:
sessionStorage.setItem("carColor", "Pink");
// Store pcColor: "Yellow" inside the session storage object:
sessionStorage.setItem("pcColor", "Yellow");
// Store laptopColor: "White" inside the session storage object:
sessionStorage.setItem("laptopColor", "White");
// Verify the number of items in the session storage:
sessionStorage.length;
// The invocation above may return:
3
Попробуйте отредактировать это
Примечание. ВызовsessionStorage.length
может возвращать значение больше3
, если хранилище сеансов вашего браузера уже содержит некоторую сохраненную информацию.
Пример 2. Как проверить количество элементов в объекте локального хранилища
Вызовите свойство length
localStorage
.
// Store carColor: "Pink" inside the browser's local storage object:
localStorage.setItem("carColor", "Pink");
// Store pcColor: "Yellow" inside the local storage object:
localStorage.setItem("pcColor", "Yellow");
// Store laptopColor: "White" inside the local storage object:
localStorage.setItem("laptopColor", "White");
// Verify the number of items in the local storage:
localStorage.length;
// The invocation above may return:
3
Попробуйте отредактировать это
Примечание
. ВызовlocalStorage.length
может возвращать значение больше3
, если локальное хранилище вашего браузера уже содержит некоторую сохраненную информацию.
Что такое метод RemoveItem() веб-хранилища?
Метод RemoveItem()
удаляет свойство из указанного веб-хранилища.
Синтаксис метода RemoveItem()
RemoveItem()
принимает один обязательный аргумент. Вот синтаксис:
webStorageObject.removeItem(key);
webStorageObject
представляет объект хранилища (localStorage
илиsessionStorage
), элемент которого вы хотите удалить.key
является обязательным аргументом. Это строка, определяющая имя свойства веб-хранилища, которое вы хотите удалить.
Пример 1: Как удалить данные из объекта хранения сеанса
- Вызовите метод
removeItem()
классаsessionStorage
. - Укажите название данных, которые вы хотите удалить.
// Store carColor: "Pink" inside the browser's session storage object:
sessionStorage.setItem("carColor", "Pink");
// Store pcColor: "Yellow" inside the session storage object:
sessionStorage.setItem("pcColor", "Yellow");
// Store laptopColor: "White" inside the session storage object:
sessionStorage.setItem("laptopColor", "White");
// Remove the pcColor item from the session storage:
sessionStorage.removeItem("pcColor");
// Confirm whether the pcColor item still exists in the session storage:
sessionStorage.getItem("pcColor");
// The invocation above will return:
null
Попробуйте отредактировать это
Примечание. Метод removeItem() ничего не сделает, если его аргумент не существует в хранилище сеанса.
Пример 2. Как удалить данные из объекта локального хранилища
- Вызовите метод
removeItem()
localStorage
. - Укажите название данных, которые вы хотите удалить.
// Store carColor: "Pink" inside the browser's local storage object:
localStorage.setItem("carColor", "Pink");
// Store pcColor: "Yellow" inside the local storage object:
localStorage.setItem("pcColor", "Yellow");
// Store laptopColor: "White" inside the local storage object:
localStorage.setItem("laptopColor", "White");
// Remove the pcColor item from the local storage:
localStorage.removeItem("pcColor");
// Confirm whether the pcColor item still exists in the local storage:
localStorage.getItem("pcColor");
// The invocation above will return:
null
Попробуйте отредактировать это
Примечание. Метод removeItem()
ничего не сделает, если его аргумент не существует в локальном хранилище.
Что такое метод web-хранилища Clear()?
Метод clear()
очищает (удаляет) все элементы в указанном веб-хранилище.
Синтаксис метода clear()
Clear()
не принимает аргументов. Вот синтаксис:
webStorageObject.clear();
webStorageObject
представляет объект хранилища (localStorage
или sessionStorage
), элементы которого вы хотите очистить.
Пример 1. Как удалить все элементы из объекта session storage
Вызовите метод clear()
класса sessionStorage
.
// Store carColor: "Pink" inside the browser's session storage object:
sessionStorage.setItem("carColor", "Pink");
// Store pcColor: "Yellow" inside the session storage object:
sessionStorage.setItem("pcColor", "Yellow");
// Store laptopColor: "White" inside the session storage object:
sessionStorage.setItem("laptopColor", "White");
// Clear all items from the session storage:
sessionStorage.clear();
// Confirm whether the session storage still contains any item:
console.log(sessionStorage);
// The invocation above will return:
{length: 0}
Попробуйте отредактировать это
Пример 2. Как удалить все элементы из объекта local storage
Вызовите метод clear()
localStorage
.
// Store carColor: "Pink" inside the browser's local storage object:
localStorage.setItem("carColor", "Pink");
// Store pcColor: "Yellow" inside the local storage object:
localStorage.setItem("pcColor", "Yellow");
// Store laptopColor: "White" inside the local storage object:
localStorage.setItem("laptopColor", "White");
// Clear all items from the local storage:
localStorage.clear();
// Confirm whether the local storage still contains any item:
console.log(localStorage);
// The invocation above will return:
{length: 0}
Попробуйте отредактировать это
Теперь, когда мы знаем, что такое веб-хранилище и как получить к нему доступ, мы можем попрактиковаться в его использовании в проекте JavaScript.
Время попрактиковаться с веб-хранилищем
Рассмотрим следующее приложение «Список дел»:
Проблема
Проблема с приложением «Список дел» заключается в следующем:
- Задачи исчезают всякий раз, когда пользователи обновляют веб-страницу.
Ваше упражнение
Используйте соответствующие API-интерфейсы веб-хранилища для выполнения следующих задач:
- Предотвращение исчезновения элементов списка дел при сбое сеанса при перезагрузке браузера.
- Предотвращение исчезновения элементов списка дел локального раздела всякий раз, когда пользователи перезагружают или закрывают вкладку (или окно) браузера.
- Автоматическое отображение разделов сеанса, ранее добавленных задач, при перезагрузке страницы.
- Автоматическое отображение локальных разделов ранее добавленных задач при перезагрузке страницы (или повторном открытии браузера).
Бонусное упражнение
Используйте консоль браузера, чтобы:
- Проверить количество элементов в объекте хранения сеанса вашего браузера.
- Отобразить имя нулевого элемента индекса вашего локального хранилища.
- Удалить все элементы из хранилища сеансов вашего браузера.
Попробуйте упражнение по веб-хранилищу
Примечание. Вы получите гораздо больше пользы от этого урока, если попробуете выполнить это упражнение самостоятельно.
Если вы застряли, не расстраивайтесь. Вместо этого просмотрите урок и попробуйте еще раз.
После того, как вы сделаете все возможное (если не сделаете этого, вы только обманете себя!), мы сможем обсудить, как я подошел к упражнению ниже.
Как вы решили задачу по веб-хранилищу?
Ниже приведены возможные способы выполнения упражнения.
Как предотвратить исчезновение элементов дел из-за сбоя хранилища сеансов при перезагрузке страницы
Всякий раз, когда пользователи нажимают кнопку «Добавить задачу»,
- Получите содержимое существующего хранилища сеансов, если таковое имеется. В противном случае верните пустой массив.
- Объедините существующие элементы дел с новыми данными пользователя.
- Добавьте новый список дел в объект хранения сеанса браузера.
Вот код:
sessionAddTaskBtn.addEventListener('click', () => {
// Get existing session storage's content, if any. Otherwise, return an empty array:
const currentTodoArray =
JSON.parse(sessionStorage.getItem('codesweetlyStore')) || [];
// Merge currentTodoArray with the user's new input:
const newTodoArray = [
...currentTodoArray,
{ checked: false, text: sessionInputEle.value },
];
// Add newTodoArray to the session storage object:
sessionStorage.setItem('codesweetlyStore', JSON.stringify(newTodoArray));
const todoLiElements = createTodoLiElements(newTodoArray);
sessionTodosContainer.replaceChildren(...todoLiElements);
sessionInputEle.value = '';
});
Попробуйте отредактировать это
Примечание. Три точки (...
), предшествующие переменнойcurrentTodoArray
, обозначают оператор распространения. Мы использовали его в объектеnewTodoArray
для копирования элементовcurrentTodoArray
вnewTodoArray
.
Как предотвратить исчезновение элементов списка дел из-за сбоя локального хранилища при перезагрузке или повторном открытии страницы
- Получите содержимое существующего локального хранилища, если таковое имеется. В противном случае верните пустой массив.
- Объедините существующие элементы дел с новыми данными пользователя.
- Добавьте новый список дел в объект локального хранилища браузера.
Вот код:
localAddTaskBtn.addEventListener('click', () => {
// Get existing local storage's content, if any. Otherwise, return an empty array:
const currentTodoArray =
JSON.parse(localStorage.getItem('codesweetlyStore')) || [];
// Merge currentTodoArray with the user's new input:
const newTodoArray = [
...currentTodoArray,
{ checked: false, text: localInputEle.value },
];
// Add newTodoArray to the local storage object:
sessionStorage.setItem('codesweetlyStore', JSON.stringify(newTodoArray));
const todoLiElements = createTodoLiElements(newTodoArray);
localTodosContainer.replaceChildren(...todoLiElements);
localInputEle.value = '';
});
Попробуйте отредактировать это
Примечание. ОператорlocalTodosContainer.replaceChildren(...todoLiElements)
сообщает браузеру заменить текущие дочерние элементыlocalTodosContainer
списком элементов<li>
в массивеtodoLiElements
.
Как автоматически отобразить ранее добавленные задачи Session section при перезагрузке страницы
Каждый раз, когда пользователи перезагружают страницу,
- Получите содержимое существующего хранилища сеансов, если таковое имеется. В противном случае верните пустой массив.
- Используйте полученное содержимое для создания элементов
<li>
. - Заполните пространство отображения задач элементами
<li>
.
Вот код:
window.addEventListener('load', () => {
// Get existing session storage's content, if any. Otherwise, return an empty array:
const sessionTodoArray =
JSON.parse(sessionStorage.getItem('codesweetlyStore')) || [];
// Use the retrieved sessionTodoArray to create <li> elements:
const todoLiElements = createTodoLiElements(sessionTodoArray);
// Populate the tasks display space with the todoLiElements:
sessionTodosContainer.replaceChildren(...todoLiElements);
});
Попробуйте отредактировать это
Как автоматически отобразить ранее добавленные задачи Local section при перезагрузке страницы или повторном открытии
Всякий раз, когда пользователи перезагружают или повторно открывают страницу,
- Получите содержимое существующего локального хранилища, если таковое имеется. В противном случае верните пустой массив.
- Используйте полученное содержимое для создания элементов
<li>
. - Заполните пространство отображения задач элементами
<li>
.
Вот код:
window.addEventListener('load', () => {
// Get existing local storage's content, if any. Otherwise, return an empty array:
const localTodoArray =
JSON.parse(localStorage.getItem('codesweetlyStore')) || [];
// Use the retrieved localTodoArray to create <li> elements:
const todoLiElements = createTodoLiElements(localTodoArray);
// Populate the tasks display space with the todoLiElements:
localTodosContainer.replaceChildren(...todoLiElements);
});
Попробуйте отредактировать это
Как проверить общее количество элементов в хранилище сеансов браузера
Используйте свойство length
хранилища сеансов следующим образом:
console.log(sessionStorage.length);
Попробуйте отредактировать это
Как отобразить имя элемента нулевого индекса локального хранилища
Используйте метод key()
локального хранилища следующим образом:
console.log(localStorage.key(0));
Попробуйте отредактировать это
Как очистить хранилище сеансов браузера
Используйте метод clear()
хранилища сеансов следующим образом:
sessionStorage.clear();
Как продолжить практику использования веб-хранилища
Приложение to-do по-прежнему имеет большой потенциал. Например, вы можете:
- Преобразуйте его в приложение React TypeScript.
- Сделайте его доступным с клавиатуры.
- Разрешите пользователям удалять или редактировать отдельные задачи.
- Разрешите пользователям отмечать (отмечать как важные) определенные задачи.
- Разрешите пользователям указывать сроки выполнения.
Итак, не стесняйтесь продолжать развивать то, что мы создали в этом руководстве, чтобы вы могли лучше понять объекты веб-хранилища.
Например, вот моя попытка сделать два сбоя функциональными:
Прежде чем мы завершим наше обсуждение, вам следует знать некоторые различия между веб-хранилищем и файлами cookie. Итак, поговорим об этом ниже.
Веб-хранилище против файлов cookie: в чем разница?
Веб-хранилище и файлы cookie — это два основных способа хранения данных локально в браузере пользователя. Но они работают по-другому. Ниже приведены основные различия между ними.
Лимит хранения
Файлы cookie: максимальный размер хранилища составляет 4 килобайта.
Веб-хранилище: может хранить намного больше, чем 4 килобайта данных. Например, Safari 8 может хранить до 5 МБ, а Firefox 34 — 10 МБ.
Передача данных на сервер
Файлы cookie: передают данные на сервер всякий раз, когда браузеры отправляют HTTP-запросы на веб-сервер.
Веб-хранилище: никогда не передает данные на сервер.
Примечание. Отправка данных на сервер является пустой тратой пропускной способности пользователей, если такая информация необходима только клиенту (браузеру), а не серверу.
Слабая целостность и конфиденциальность
Файлы cookie: страдают от слабой целостности и слабой конфиденциальности.
Веб-хранилище: не страдает от проблем с целостностью и конфиденциальностью, поскольку оно хранит данные для каждого источника.
Свойство
Файлы cookie: файлы cookie являются свойством объекта Document.
Веб-хранилище: Веб-хранилище является свойством объекта Window.
Срок действия
Файл cookie: вы можете указать дату истечения срока действия файла cookie.
Веб-хранилище. Браузеры определяют дату истечения срока действия веб-хранилища.
Получение индивидуальных данных
Файлы cookie: невозможно получить отдельные данные. Всегда приходится вспоминать все данные, чтобы прочитать хоть одну.
Веб-хранилище: вы можете выбрать конкретные данные, которые хотите получить.
Синтаксис Cookies vs Web storage
Синтаксис хранения данных
Cookies:
document.cookie = "key=value";
Web storage:
webStorageObject.setItem(key, value);
Синтаксис чтения данных
Cookies:
document.cookie;
Веб-хранилище:
webStorageObject.getItem(key);
Синтаксис удаления данных
Cookies:
document.cookie = "key=; expires=Thu, 01 May 1930 00:00:00 UTC";
Приведенный выше фрагмент удаляет файл cookie, присваивая пустое значение свойству key
и устанавливая дату истечения срока действия.
Веб-хранилище:
webStorageObject.removeItem(key);
Подведение итогов
В этой статье мы обсудили, как использовать веб-хранилище и его встроенные интерфейсы. Мы также использовали проект списка дел, чтобы попрактиковаться в использовании объектов локального и сеансового хранилища для локального и безопасного хранения данных в браузерах пользователей.
Спасибо за прочтение!