Local Storage

Local Storage — это Web API, который позволяет веб-приложениям хранить данные локально в браузере пользователя без отправки на сервер.

Основные методы

 1// Сохранение данных
 2localStorage.setItem('key', 'value');
 3localStorage.setItem('user', JSON.stringify({name: 'John', age: 30}));
 4
 5// Получение данных
 6const value = localStorage.getItem('key');
 7const user = JSON.parse(localStorage.getItem('user'));
 8
 9// Удаление конкретного элемента
10localStorage.removeItem('key');
11
12// Очистка всех данных
13localStorage.clear();
14
15// Получение количества элементов
16const length = localStorage.length;
17
18// Получение ключа по индексу
19const key = localStorage.key(0);

Хранение сложных объектов

 1// Объект для хранения
 2const userData = {
 3  name: 'Alice',
 4  email: 'alice@example.com',
 5  preferences: {
 6    theme: 'dark',
 7    language: 'en'
 8  }
 9};
10
11// Сохранение
12localStorage.setItem('userData', JSON.stringify(userData));
13
14// Получение
15const savedUser = JSON.parse(localStorage.getItem('userData'));
16console.log(savedUser.preferences.theme); // 'dark'

Обработка событий storage

1// Слушать изменения в localStorage
2window.addEventListener('storage', function(e) {
3  console.log('Ключ:', e.key);
4  console.log('Старое значение:', e.oldValue);
5  console.log('Новое значение:', e.newValue);
6  console.log('URL:', e.url);
7});

Ограничения localStorage

  • Размер — обычно 5-10 MB на домен
  • Синхронность — блокирующие операции
  • Строки — хранит только строки
  • Безопасность — доступен JavaScript коду
  • Приватный режим — может быть недоступен

localStorage vs других хранилищ

  • sessionStorage — данные только для сессии
  • cookies — отправляются на сервер, меньший размер
  • IndexedDB — для больших объемов данных

Проверка поддержки

 1function isLocalStorageAvailable() {
 2  try {
 3    const test = '__localStorage_test__';
 4    localStorage.setItem(test, test);
 5    localStorage.removeItem(test);
 6    return true;
 7  } catch(e) {
 8    return false;
 9  }
10}

FAQ

Безопасно ли хранить чувствительные данные в localStorage?

Нет, localStorage доступен JavaScript коду и не подходит для токенов, паролей и другой чувствительной информации.