JavaScript localStorage — постійне сховище браузера
localStorage зберігає дані в браузері назавжди — вони переживають і перезавантаження, і закриття браузера.
Загальний опис
Зберігає лише рядки. Число 42 перетвориться на '42', а об'єкт — на безглузде '[object Object]'. Тому об'єкти кладуть через JSON.stringify(), а дістають через JSON.parse().
Обсяг обмежений — близько 5 МБ на домен. Спроба перевищити кидає помилку, тож запис великих даних варто загортати в try...catch.
І найважливіше: доступ синхронний. Читання блокує головний потік. Класти туди мегабайти й читати їх на кожен кадр — прямий шлях до гальм.
У приватному режимі сховище може бути недоступним узагалі — код має це переживати.
автор: NagarD
- Нотатка
-
Ніколи не зберігай тут токени й паролі. Будь-який скрипт на сторінці читає
автор: NagarDlocalStorageбез перешкод — одна XSS-вразливість, і дані користувача пішли.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| localStorage | 4+ | 3.5+ | 4+ | 10.5+ | 12+ | 8+ |
| Переглядач | ||||
|---|---|---|---|---|
| localStorage | yes | yes | yes | yes |
Приклади
+ запропонувати свій приклад у пісочниці
Тема сайту, що переживає перезавантаження, і об'єкт через JSON.
// зберігається ЛИШЕ рядок
localStorage.setItem('theme', 'dark');
console.log(localStorage.getItem('theme')); // 'dark'
// об'єкт — через JSON
localStorage.setItem('user', JSON.stringify({ name: 'Іван', id: 1 }));
const user = JSON.parse(localStorage.getItem('user'));
// немає ключа — null, а не помилка
console.log(localStorage.getItem('missing')); // null
localStorage.removeItem('theme');
// у приватному режимі може кинути помилку
try {
localStorage.setItem('big', hugeString);
} catch {
console.warn('Сховище недоступне або переповнене');
}
Коментарі
Коментарів ще немає — будьте першим!