Учебник по Electron.js

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

Локальное хранилище

Сохранить промежуточные данные между запусками программы позволяет локальное хранилище, реализуемое объектом localStorage. Получить доступ к хранилищу можно так:

let storage = window.localStorage;

Объект localStorage содержит следующие методы:

let storage = window.localStorage;
for (let i = 0; i < storage.length; i++) {
   console.log(`${storage.key(i)} => ` + 
               `${storage.getItem(storage.key(i))}`);
}

Можно также воспользоваться циклом for...in:

for (const key in storage) {
   if ( storage.hasOwnProperty(key) ) {
      console.log(`${key} => ${storage.getItem(key)}`);
   }
}

Или циклом for...of совместно с методом keys():

let keys = Object.keys(storage);
for (const key of keys) {
   console.log(`${key} => ${storage.getItem(key)}`);
}

Пример использования локального хранилища приведен в листинге 9.1.

Листинг 9.1. Локальное хранилище

<!doctype html>
<html lang="ru">
<head>
   <meta charset="utf-8">
   <meta http-equiv="Content-Security-Policy"
         content="default-src 'self' 'unsafe-inline'">
   <title>Локальное хранилище</title>
</head>
<body>
   Ключ<br>
   <input type="text" id="txt1"><br>
   Значение<br>
   <input type="text" id="txt2"><br>
   <input type="button" id="btn1" value="Показать данные"><br>
   <input type="button" id="btn2" value="Сохранить данные"><br>
   <input type="button" id="btn3" value="Удалить все данные">
   <script>
      let btn1 = document.getElementById('btn1');
      btn1.addEventListener('click', (e) => {
         let storage = window.localStorage;
         console.log(storage);
         for (let i = 0; i < storage.length; i++) {
            console.log(`${storage.key(i)} => ` + 
                        `${storage.getItem(storage.key(i))}`);
         }
      });
      let btn2 = document.getElementById('btn2');
      btn2.addEventListener('click', (e) => {
         let txt1 = document.getElementById('txt1');
         let txt2 = document.getElementById('txt2');
         if (txt1.value !== '' && txt2.value !== '') {
            let storage = window.localStorage;
            storage.setItem(txt1.value, txt2.value);
            console.log('Данные сохранены');
            txt1.value = '';
            txt2.value = '';
            txt1.focus();
         }
         else {
            console.log('Поле не заполнено');
         }
      });
      let btn3 = document.getElementById('btn3');
      btn3.addEventListener('click', (e) => {
         window.localStorage.clear();
         console.log('Данные удалены');
      });
   </script>
</body>
</html>