JS об'єкт Storage
Введення до Storage
Об'єкт Storage у JavaScript є частиною Web Storage API і дозволяє зберігати пари ключ-значення в сесійному або локальному сховищі. Він допомагає зберігати дані між сеансами переглядача, і ці дані можуть бути доступні навіть після закриття вкладки або вікна переглядача (в залежності від типу сховища).
JavaScript надає доступ до двох типів сховищ даних: localStorage і sessionStorage. Обидва сховища функціонують за допомогою пар ключ-значення і мають однаковий інтерфейс, але вони відрізняються за тривалістю зберігання даних і контекстом доступу.
localStorage: Це довготривале сховище. Дані, збережені тут, залишаються після закриття вікна або вкладки браузера. Якщо користувач вирішив зберегти свої налаштування, наприклад, режим "темна тема" для веб-сайту, то ці налаштування можна зберегти в localStorage. Так, користувачеві не потрібно буде встановлювати ці налаштування знову при наступному відвідуванні сайту.
Приклад:
localStorage.setItem('theme', 'dark');
У цьому прикладі ми зберігаємо налаштування теми для веб-сайту. Коли користувач наступного разу відвідає сайт, можна легко витягти це значення та встановити потрібний режим.
sessionStorage: Це сховище для даних сеансу. Дані в sessionStorage зберігаються тільки протягом сеансу відвідування веб-сайту. Якщо, наприклад, ви хочете зберегти дані про пункти, додані в кошик користувачем під час покупок, вам слід використовувати sessionStorage. Після закриття вкладки або вікна даних вже не буде.
Приклад:
sessionStorage.setItem('cartItem', 'Product123');
Тут ми зберігаємо інформацію про товар, доданий до кошика. Якщо користувач закриє вкладку або вікно і повернеться до сайту, інформація про кошик буде втрачена.
Ці два типи сховищ забезпечують гнучкість при роботі з даними на клієнтській стороні. У загальному випадку робота з localStorage та sessionStorage дуже схожа. Вибір між цими двома варіантами повинен базуватися на вашій конкретній потребі щодо тривалості зберігання даних.
Робота з даними в сховищі
Робота з даними у localStorage та sessionStorage відносно проста завдяки їх ключ-значення інтерфейсу. Якщо вам потрібно зберігати, отримувати, оновлювати або видаляти дані, ви можете зробити це за допомогою декількох методів:
Додавання даних:
Метод setItem дозволяє зберігати пари ключ-значення в сховищі.
Приклад:
localStorage.setItem('username', 'JohnDoe');
У цьому прикладі ми зберігаємо ім'я користувача 'JohnDoe' з ключем 'username'. Коли вам потрібно отримати це ім'я користувача пізніше, ви зможете звертатися до нього за допомогою цього ключа.
Отримання даних:
Метод getItem дозволяє отримувати значення за допомогою ключа.
Приклад:
let user = localStorage.getItem('username');
console.log(user); // Виведе: JohnDoe
Тут ми отримуємо збережене раніше ім'я користувача з ключем 'username' та виводимо його в консоль. Якщо даного ключа не існує в сховищі, метод поверне null.
Видалення даних:
Якщо вам потрібно видалити певний елемент з сховища, використовуйте метод removeItem.
Приклад:
localStorage.removeItem('username');
Після виконання цього коду, ім'я користувача з ключем 'username' більше не буде доступне в сховищі. Спроба отримати його за допомогою getItem поверне null.
Очищення сховища:
Якщо вам потрібно повністю очистити сховище, використовуйте метод clear.
Приклад:
localStorage.clear();
Цей метод видалить усі пари ключ-значення з localStorage. Будьте обережні з його використанням, оскільки він видалить усі дані, не лише ті, які ви зберігали в поточній сесії.
- Порада
-
Хоча дані зберігаються локально, вони можуть бути вразливими для атак, таких як cross-site scripting. Не зберігайте конфіденційну інформацію без шифрування.
автор: Bond - Порада
-
Зміни в
автор: BondlocalStorageбудуть доступні для всіх вкладок та вікон, які використовують той же домен. Тому ви можете використовувати його для синхронізації стану між різними вкладками. - Нотатка
-
Як правило, більшість браузерів надає обмеження розміру в 5-10 МБ для кожного сховища (
автор: BondlocalStorageтаsessionStorage). Пам'ятайте про це, коли зберігаєте великі об'єкти або масиви. - Нотатка
-
Операції з сховищем є синхронними, що може призвести до блокування основного потоку, якщо використовується велика кількість даних.
автор: Bond - Нотатка
-
автор: BondlocalStorageтаsessionStorageможуть зберігати лише рядкові дані. Якщо вам потрібно зберегти об'єкти або масиви, використовуйтеJSON.stringify()перед зберіганням таJSON.parse()при отриманні.
Синтаксис
localStorage.setItem('key', 'value');
sessionStorage.setItem('key', 'value');
методи
| Метод | Опис |
|---|---|
| clear | Очищає всі дані, що збережені у вибраній області сховища браузера. |
| getItem | Отримує значення за вказаним ключем з обраного сховища. |
| key | Метод повертає ключ, що відповідає вказаному індексу у сховищі. |
| removeItem | Видаляє елемент із сховища даних браузера, що зберігається за вказаним ключем. |
| setItem | Зберігає пару ключ-значення в локальному або сеансовому сховищі браузера. |
властивості
| Властивість | Опис |
|---|---|
| length | Повертає кількість елементів у сховищі. |
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 4 | 3.5 | 4 | 10.5 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 37 | 18 | 6 | 3.2 |
| Переглядач | ||
|---|---|---|
| 0.10.0 | 1.10 |
Приклади
+ запропонувати свій приклад у пісочниці
Якщо у веб-застосунку є певні налаштування користувача, наприклад, тема інтерфейсу (світла або темна), ви можете зберігати їх в localStorage для підтримки вибору користувача при наступних відвідуваннях.
// Збереження налаштувань
localStorage.setItem('theme', 'dark');
// Отримання налаштувань при завантаженні сторінки
let userTheme = localStorage.getItem('theme');
if (userTheme) {
document.body.className = userTheme;
}
Коли користувач додає товари до кошику, але не завершує покупку, ви можете використовувати localStorage для зберігання цієї інформації. При наступному відвідуванні сайту товари будуть вже у кошику.
let cart = [
{id: 1, name: "Item A", quantity: 2},
{id: 2, name: "Item B", quantity: 1}
];
// Зберігання кошику
localStorage.setItem('cart', JSON.stringify(cart));
// Відновлення кошику при наступному відвідуванні
let savedCart = JSON.parse(localStorage.getItem('cart') || '[]');
Для простих онлайн ігор ви можете зберігати прогрес користувача (рівень, досвід тощо) у localStorage, щоб він міг продовжити грати з місця, де зупинився.
let gameProgress = {
level: 5,
points: 3000
};
// Зберігання прогресу гри
localStorage.setItem('gameProgress', JSON.stringify(gameProgress));
// Відновлення прогресу при наступному відвідуванні
let savedProgress = JSON.parse(localStorage.getItem('gameProgress') || '{}');
Коментарі
Коментарів ще немає — будьте першим!