0
🆓 FREE PROJECT

🚖 Урок 4: LocalStorage — пам'ять браузера!

💾 Історія поїздок назавжди!

Закрив додаток — відкрив знову — а там історія всіх поїздок!

LocalStorage — це сейф у браузері, що зберігає дані назавжди!

💡
А ТИ ЗНАВ?

💾 LocalStorage може зберігати 5-10 MB даних!
🔐 Дані залишаються навіть після закриття браузера!

🧠
НОВЕ В ЦЬОМУ УРОЦІ!

💾 localStorage.setItem() — зберігаємо дані
📖 localStorage.getItem() — читаємо дані
🗑️ localStorage.removeItem() — видаляємо дані

🔐
LocalStorage — це сейф у браузері!
Уяви, що в кожному браузері є маленький сейф.

📥 setItem('ключ', 'значення') — кладеш щось у сейф з підписом
📤 getItem('ключ') — дістаєш за підписом
🗑️ removeItem('ключ') — викидаєш конкретну річ
💥 clear() — викидаєш ВСЕ з сейфу

І головне — сейф НЕ очищається при закритті браузера! 🔒

🆚 Чому не просто змінні?

❌ Звичайні змінні
let trips = [];

• Живуть тільки поки сторінка відкрита
• Перезавантажив — все пропало!
• Закрив вкладку — дані зникли
✅ localStorage
localStorage.setItem(...)

• Зберігається на диску браузера
• Перезавантажив — дані на місці!
• Закрив браузер — все збережено
📱 ЖИВИЙ ДОДАТОК
Історія поїздок зберігається!
9:41 🔋 100%
🚖 KOODI TAXI
📋 Історія поїздок
Поки що немає поїздок

👆 Додай поїздки, перезавантаж сторінку — вони залишаться!

🗄️
LocalStorage Visualizer
Дивись що зберігається в браузері!
💾 localStorage 0 items
Порожньо...
📦
JSON.stringify & JSON.parse
Як зберігати об'єкти та масиви?
📦 Об'єкт JavaScript
{
  from: "Хрещатик",
  to: "Аеропорт",
  price: 250
}
📝 Рядок для localStorage
'{"from":"Хрещатик",
 "to":"Аеропорт",
 "price":250}'
💡 Запам'ятай: localStorage зберігає тільки рядки! Для об'єктів використовуй JSON.
JSON.stringify(об'єкт)

📦 → 📝 Перетворює об'єкт JavaScript на текстовий рядок.
Використовуй ПЕРЕД збереженням в localStorage!

JSON.parse(рядок)

📝 → 📦 Перетворює текстовий рядок назад на об'єкт JavaScript.
Використовуй ПІСЛЯ читання з localStorage!

🤔 Чому це важливо?

localStorage працює як текстовий файл — він розуміє тільки рядки!

Якщо спробуєш зберегти об'єкт напряму:
localStorage.setItem('trip', {from: 'Київ'})
Отримаєш: "[object Object]" — марний текст! 😱

Тому завжди: stringify → зберегти → прочитати → parse

1
💾 setItem — зберігаємо дані
📥 setItem — як покласти речі в шафу з підписом!
Наклеюєш ярлик (ключ) і кладеш річ (значення).
Збережи дані в localStorage:
// Зберігаємо просте значення localStorage.setItem('username', 'Олексій'); // Зберігаємо масив поїздок const trips = [ { from: 'Хрещатик', to: 'Аеропорт', price: 250 }, { from: 'Вокзал', to: 'Центр', price: 80 } ]; // ⚠️ ВАЖЛИВО: Масив треба перетворити в рядок! localStorage.setItem('trips', JSON.stringify(trips));
🧪 localStorage зберігає дані...
💡 localStorage.setItem(key, value) — зберігає дані в браузері

💡 key — це як ім'я файлу: унікальний ідентифікатор (завжди рядок)

💡 value — значення, яке зберігаємо (УВАГА: завжди рядок!)

💡 JSON.stringify() — "упаковує" об'єкт/масив у текстовий рядок

⚠️ ТИПОВА ПОМИЛКА:
localStorage.setItem('trips', trips) — НЕ ПРАЦЮЄ!
Масив перетвориться на рядок "[object Object]"

✅ ПРАВИЛЬНО:
localStorage.setItem('trips', JSON.stringify(trips))
📊 ЛІМІТИ localStorage:
• Максимум 5-10 MB на домен
• Зберігає дані назавжди (поки не очистиш)
• Працює тільки в межах одного домену
2
📖 getItem — читаємо дані
📤 getItem — як знайти річ у шафі за ярликом!
Кажеш "дай мені те, що підписано 'trips'" — і отримуєш!
Читаємо дані з localStorage:
// Читаємо просте значення const username = localStorage.getItem('username'); console.log(username); // "Олексій" // Читаємо масив (треба розпарсити!) const tripsString = localStorage.getItem('trips'); const trips = JSON.parse(tripsString); // Якщо ключа немає — повертає null const notExist = localStorage.getItem('неіснуючий'); console.log(notExist); // null // Безпечне читання з дефолтним значенням const safeTrips = JSON.parse(localStorage.getItem('trips')) || [];
🧪 Щоб зберегти масив в localStorage треба...
💡 localStorage.getItem(key) — читає дані за ключем

💡 Повертає null — якщо ключа не існує (а не помилку!)

💡 JSON.parse() — "розпаковує" рядок назад в об'єкт/масив

💡 || [] — якщо null, використай порожній масив

🔄 ПАТЕРН "ЧИТАЙ БЕЗПЕЧНО":

const trips = JSON.parse(localStorage.getItem('trips')) || [];
Що тут відбувається:
1️⃣ getItem('trips') — читаємо рядок (або null)
2️⃣ JSON.parse(...) — перетворюємо в масив (або null → null)
3️⃣ || [] — якщо null, повертаємо порожній масив
⚠️ БЕЗ || [] БУДЕ ПОМИЛКА:
Якщо getItem поверне null, то JSON.parse(null) = null
І потім null.forEach() — ПОМИЛКА! 💥
3
🗑️ removeItem — видаляємо дані
🧹 removeItem — як викинути річ з шафи!
Знаєш ярлик — можеш видалити. Легко!
Повна логіка історії поїздок:
// Функція завантаження історії function loadHistory() { const trips = JSON.parse(localStorage.getItem('trips')) || []; const list = document.getElementById('tripList'); list.innerHTML = ''; trips.forEach(trip => { list.innerHTML += '<li>🚖 ' + trip.from + ' → ' + trip.to + '</li>'; }); } // Функція збереження поїздки function saveTrip(from, to, price) { const trips = JSON.parse(localStorage.getItem('trips')) || []; trips.push({ from, to, price }); localStorage.setItem('trips', JSON.stringify(trips)); loadHistory(); } // Очищення історії document.getElementById('clearHistory').addEventListener('click', function() { localStorage.removeItem('trips'); loadHistory(); }); loadHistory(); // Завантажити при старті
🧪 localStorage.getItem('неіснуючий') поверне...
💡 localStorage.removeItem(key) — видаляє конкретний ключ

💡 localStorage.clear() — видаляє ВСЕ з localStorage (обережно!)

💡 loadHistory() — викликаємо при старті і після кожної зміни

📋 ВСІ МЕТОДИ localStorage:

setItem(key, value)— зберегти
getItem(key)— прочитати
removeItem(key)— видалити один
clear()— видалити ВСЕ
key(index)— отримати ключ за індексом
length— кількість записів
🔄 АЛГОРИТМ РОБОТИ З ДАНИМИ:

📖 ЧИТАННЯ (loadHistory):
1. Прочитай з localStorage
2. Розпарси JSON (або [] якщо null)
3. Відобрази на сторінці

💾 ЗБЕРЕЖЕННЯ (saveTrip):
1. Прочитай поточні дані
2. Додай новий елемент (push)
3. Збережи назад (stringify)
4. Оновлення відображення (loadHistory)
🆚 localStorage vs sessionStorage:

localStorage — дані зберігаються НАЗАВЖДИ
sessionStorage — дані видаляються при закритті вкладки

Синтаксис однаковий, різниця тільки в часі життя!

▶️ Натисни RUN і перевір!

Додай поїздку, перезавантаж сторінку — історія залишиться!

🏆 Що ти вивчив:

localStorage.setItem() — зберігати дані
localStorage.getItem() — читати дані
localStorage.removeItem() — видаляти дані
JSON.stringify() / JSON.parse() — працювати з об'єктами

✅ Коли все працює:

Натисни "Готово" в редакторі!

⏱️ ~20 хв • Урок 4 з 8

Потрібна допомога?

💡 Підказка
🤖 AI-KOODI
HTML index.html ✏️
CSS style.css
JS app.js
1 2 3 4 5 6 7 8 9 10
localhost/taxi.html
🚖

Напиши код і натисни Run ▶