В процесі навчання JavaScript я вирішила зробити маленький пет проект (лендінг) для кращого зрозуміння матеріалу. Одним з елементів на сторінці є форма для додавання туру в базу даних, так як бази даних в мене немає, і в процесі дебагінгу щоразу заповнювати всі обовязкові поля туру просто не хочеться, мені ментор порадив використовувати локальне сховище браузера – Local Storage.
localStorage зручний для оптимізації процесу розробки веь сторінок. В нашому випадку, при створенні форми додавання туру, тому що при перезавантаженні сторінки дані нікуди не пропадуть, а будуть збережені.
Сам процес додавання даних в локальне сховище складається з декількох етапів:
1. Зберереження даних
Використовуємо метод:
localStorage.setItem('ключ', 'значення');
2. Відображення раніше збережених даних
Використовуємо метод:
localStorage.getItem('ключ');
3. Видалення раніше збережених даних
Використовуємо метод:
localStorage.removeItem('ключ');

Об’єкт localStorage дозволяє зберігати пари ключ/значення у браузері без терміну дії.
1 | localStorage.setItem(key, value); |
Збереження даних
function saveTour(tour) {
const tours = JSON.parse(localStorage.getItem('tours')) || [];
tours.push(tour);
localStorage.setItem('tours', JSON.stringify(tours));
}
- Витягуємо існуючі тури з
localStorage
, або створюємо пустий масив, якщо даних немає. - Додаємо новий тур до масиву.
- Зберігаємо оновлений масив назад у
localStorage
у форматі JSON.
Відображення раніше збережених даних
function displayTours() {
tourList.innerHTML = '';
const tours = JSON.parse(localStorage.getItem('tours')) || [];
const tourWrap = document.createElement('div');
tourWrap.classList.add('w3-row-padding', 'w3-padding-32', 'accordion-content');
tours.forEach((tour, index) => {
const tourDiv = document.createElement('div');
tourDiv.classList.add('w3-third', 'w3-margin-bottom');
tourDiv.innerHTML = `
<img src="${tour.image}" alt="Tour Image" style="width:100%; height:200px; object-fit:cover;">
<div class="w3-container w3-white">
<h3><b>${tour.city}</b></h3>
<p class="w3-opacity">${tour.date}</p>
<p>${tour.description}</p>
<button onclick="deleteTour(${index})" class="w3-button w3-red">Delete</button></div>
`;
tourList.appendChild(tourDiv);
});
}
- Очищаємо список турів.
- Отримуємо тури з
localStorage
. - Створюємо обгортку для турів.
- Для кожного туру створюємо
div
, заповнюємо його інформацією про тур та додаємо у список.
localStorage.setItem("user", JSON.stringify({name: "Marta"}));
const user = JSON.parse(localStorage.getItem("user"));
Відображення турів при завантаженні сторінки:
window.onload = displayTours;
Де:
- Викликаємо
displayTours
при завантаженні сторінки, щоб показати раніше збережені тури.
Порівняння localStorage
, sessionStorage
та cookies
Окрім localStorage
є ще подібні сховища про які варто загадати, часто їх порівнюють тому нижче табличка з порівняннм:
Властивість | localStorage | sessionStorage | cookies |
---|---|---|---|
Обсяг | ~5MB | ~5MB | ~4KB |
Термін зберігання | Безстроково | До закриття вкладки | Встановлюється вручну |
Відправляється на сервер | |||
Серіалізація | Так (рядки) | Так (рядки) | Так (рядки) |
Доступ з JavaScript |
Обмеження localStorage
- Обсяг: до 5MB, може бути менше на мобільних.
- Формат: зберігає лише рядки. Якщо хочеш зберегти об’єкт — треба робити:
localStorage.setItem("user", JSON.stringify({name: "Marta"}));
const user = JSON.parse(localStorage.getItem("user"));
- Безпека: доступний усьому JavaScript-коду на сторінці — не можна зберігати паролі, токени тощо.
Обробка винятків та перевірка підтримки
localStorage.setItem("user", JSON.stringify({name: "Marta"}));
const user = JSON.parse(localStorage.getItem("user"));
Браузери в режимі “інкогніто” або при переповненні сховища можуть кидати помилки — це варто враховувати.