Перейти к содержимому

API хранилища JavaScript

Введение в API хранилища

В современной веб-разработке эффективное управление данными имеет решающее значение. API хранилища JavaScript предоставляет мощные механизмы для хранения данных непосредственно в браузере, что можно использовать для улучшения пользовательского опыта и создания сложных приложений. В этом руководстве рассматриваются основы API хранилища, с акцентом на localStorage и sessionStorage.

Понимание localStorage

localStorage — это часть веб-хранилища, которая позволяет хранить данные без срока действия. Эти данные сохраняются даже после закрытия окна браузера, что делает их идеальными для данных, которые должны сохраняться между сессиями.

Сохранение данных в localStorage

Для сохранения данных с помощью localStorage можно использовать метод setItem. Вот простой пример:


javascript
// Storing data in localStorage
localStorage.setItem('username', 'JohnDoe');

Этот скрипт сохраняет имя пользователя в локальном хранилище браузера. Данные останутся доступными для будущих сессий.

Получение данных из localStorage

Для получения данных используется метод getItem. Вот как можно извлечь ранее сохраненное имя пользователя:


javascript
// Retrieving data from localStorage
var username = localStorage.getItem('username');
console.log(username); // Outputs: JohnDoe

Удаление данных из localStorage

Вы можете удалить данные из localStorage с помощью метода removeItem:


javascript
// Removing data from localStorage
localStorage.removeItem('username');

Этот метод удаляет конкретный ключ из хранилища, гарантируя, что он больше не будет доступен.

Использование sessionStorage

sessionStorage похож на localStorage, но имеет меньший срок жизни. Данные, сохраненные в sessionStorage, очищаются при завершении сессии страницы (т.е. при закрытии вкладки браузера).

Сохранение данных в sessionStorage

Вот как можно сохранить данные в sessionStorage:


javascript
// Storing data in sessionStorage
sessionStorage.setItem('sessionName', 'Session1');

Этот фрагмент кода сохраняет имя сессии, которое будет доступно только до тех пор, пока открыта вкладка браузера.

Получение данных из sessionStorage

Для получения сохраненных данных из sessionStorage используйте метод getItem:


javascript
// Retrieving data from sessionStorage
var sessionName = sessionStorage.getItem('sessionName');
console.log(sessionName); // Outputs: Session1

Удаление данных из sessionStorage

Аналогично, для удаления данных используйте метод removeItem:


javascript
// Removing data from sessionStorage
sessionStorage.removeItem('sessionName');

Лучшие практики использования Web Storage

  • Безопасность: Всегда учитывайте последствия хранения конфиденциальных данных в браузере. Избегайте хранения секретной информации, такой как пароли или персональные идентификационные данные.
  • Лимиты хранилища: Учитывайте ограничения хранилища (обычно около 5 МБ) и обрабатывайте случаи, когда хранилище может быть заполнено.
  • Кроссбраузерная совместимость: Убедитесь, что ваш код обрабатывает сценарии, в которых браузер может не поддерживать API хранилища.
  • Хранение только строк: Web Storage принимает только строки. Используйте JSON.stringify() для сохранения объектов и JSON.parse() для их извлечения.
  • Синхронизация между вкладками: Используйте StorageEvent для отслеживания изменений, внесенных в других вкладках, и поддержания данных в синхронизированном состоянии.

Полный пример для закрепления материала

Этот демо-пример показывает, как использовать API Web Storage, включая localStorage и sessionStorage. У вас есть кнопки для сохранения, извлечения и удаления данных из хранилища:


html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Storage API Interactive Demo</title>
  </head>
  <body>
    <h2>localStorage and sessionStorage Demo</h2>
    <div style="display: flex; gap: 10px">
      <button onclick="storeInLocal()">Store in localStorage</button>
      <button onclick="retrieveFromLocal()">Retrieve from localStorage</button>
      <button onclick="removeFromLocal()">Remove from localStorage</button>
    </div>

    <div style="margin: 20px 0" id="localStorageResult"></div>

    <div style="display: flex; gap: 10px; margin-top: 10px">
      <button onclick="storeInSession()">Store in sessionStorage</button>
      <button onclick="retrieveFromSession()">
        Retrieve from sessionStorage
      </button>
      <button onclick="removeFromSession()">Remove from sessionStorage</button>
    </div>

    <div style="margin-top: 20px" id="sessionStorageResult"></div>

    <script>
      function storeInLocal() {
        localStorage.setItem("demo", "Hi from LocalStorage!");
        document.getElementById("localStorageResult").textContent =
          "Stored in localStorage: " + localStorage.getItem("demo");
      }

      function retrieveFromLocal() {
        const value = localStorage.getItem("demo") || "Nothing in localStorage";
        document.getElementById("localStorageResult").textContent =
          "Retrieved from localStorage: " + value;
      }

      function removeFromLocal() {
        localStorage.removeItem("demo");
        document.getElementById("localStorageResult").textContent =
          "Item removed from localStorage.";
      }

      function storeInSession() {
        sessionStorage.setItem("demo", "Hi from SessionStorage!");
        document.getElementById("sessionStorageResult").textContent =
          "Stored in sessionStorage: " + sessionStorage.getItem("demo");
      }

      function retrieveFromSession() {
        const value =
          sessionStorage.getItem("demo") || "Nothing in sessionStorage";
        document.getElementById("sessionStorageResult").textContent =
          "Retrieved from sessionStorage: " + value;
      }

      function removeFromSession() {
        sessionStorage.removeItem("demo");
        document.getElementById("sessionStorageResult").textContent =
          "Item removed from sessionStorage.";
      }
    </script>
  </body>
</html>
  • LocalStorage: Данные, сохраненные здесь, остаются даже после закрытия и повторного открытия браузера, что делает их идеальными для сохранения пользовательских настроек или других долгосрочных данных.
  • SessionStorage: Это похоже на localStorage, но данные очищаются при завершении сессии (например, при закрытии браузера).

Нажимая на различные кнопки, вы можете увидеть, как данные добавляются, извлекаются и удаляются из каждого типа хранилища. Результаты отображаются непосредственно под каждой кнопкой, предоставляя вам мгновенную обратную связь о том, что происходит с данными в хранилище. Эта интерактивная настройка помогает визуализировать и понять, как веб-приложения могут запоминать данные между перезагрузками страниц или сессиями браузера.

Помимо взаимодействия с операциями хранилища через кнопки в этом демо-примере, вы также можете просматривать и управлять сохраненными данными непосредственно в веб-браузере. Откройте инструменты разработчика вашего браузера, перейдите в раздел Application, а затем посмотрите на вкладку Storage. Здесь вы можете увидеть записи localStorage и sessionStorage.

local and session storage in browser Этот визуальный инструмент позволяет увидеть результаты ваших действий (например, сохранение и удаление данных) в реальном времени и предоставляет практический способ изучить, как работает веб-хранилище в браузерах.

Заключение

API хранилища JavaScript предоставляет надежный и простой в использовании метод управления данными внутри браузера. Понимая и используя localStorage и sessionStorage, разработчики могут значительно улучшить пользовательский опыт своих веб-приложений. Всегда учитывайте вопросы безопасности и ограничения хранилища, чтобы ваши приложения были надежными и удобными для пользователей. С помощью этих инструментов вы можете создавать постоянные состояния и функции управления данными, которые имеют решающее значение для современных веб-приложений.

Практика

Какие утверждения точно описывают возможности API хранилища JavaScript?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.