Хранение данных на клиенте
Цель: познакомиться со способами хранения информации на стороне клиента. Написать программу для работы со списками дел использующую изученные возможности.
Содержание и порядок выполнения лабораторной работы:
- Изучите способы хранения данных в браузере, их особенности, интерфейс (свойства и методы, которые можно использовать) по материалам в источниках.
- От ветки main создайте ветку lab7 и переключитесь на нее.
- Создайте документ html с формой из текстового поля для описания задачи и кнопки для ее добавления. В хедер добавьте и “Время последнего изменения списка”. В футере укажите ваше ФИО.
- Создайте базу данных в indexedDB и хранилище объектов для хранения задач с ключом, например id и автоинкрементом.
- Напишите функции для добавления новой задачи в БД, получения всех задач и удаления одной задачи по ключу.
- При нажатии на кнопку добавить задачу, проведите валидацию поля, чтобы оно не было пустым. Если валидация пройдена, то запишите задачу в БД, а затем отобразите ее в интерфейсе в списке задач, добавив data-атрибут с id этой задачи и кнопку для удаления этой задачи.
- При нажатии на кнопку удаления задачи, удалите ее используя значение ключа из data-атрибута из БД, после этого удалите ее из интерфейса. Пока задача не удалена из бд, заблокируйте кнопку удаления. Используйте делегирование событий для обработки события нажатия: обработчик на общем родителе и работайте с объектом target.
- При загрузке страницы считайте все задачи из БД и выведите список задач в интерфейс. Также считайте время последнего изменения из localStorage и отобразите его в хедере.
- Для вывода ошибок из БД используйте toast из прошлой работы.
- Напишите функцию, которая записывает в localStorage время последнего изменения списка задач. Используйте эту функцию при успешных операциях добавления и удаления задач из БД.
- Проведите ручное тестирование в браузере.
- Отформатируйте документы.
- Убедитесь, что нет замечаний от ESLint.
- Зафиксируйте результаты работы с помощью системы контроля версий git и отправьте ветку lab7 в репозиторий на github.
- Загрузите проект на Render через ручную загрузку (manual deploy).
Требования к JS:
- HTML код валиден.
- Отсутствуют ошибки ESLint в панели Problems в VS Code.
- Отсутствуют ошибки в консоли браузера при работе с веб-страницей.
Результаты выполнения лабораторной работы:
Результаты работы проверены наставником.
Статическая веб-страница на хостинге, со структурой и оформлением, которая соответствует требованиям и сохранена в системе контроля версий.
Источники
- Хранение данных в браузере - learn js
- Хранение данных в браузере - doka.guide
- Client-side storage - MDN
- Событие storage
- Атрибуты data-*
- Делегирование событий
- Understanding cookies - web.dev
Вопросы для защиты
- Какие существуют способы хранения данных на стороне клиента?
- localStorage и sessionStorage. Различие и API.
- Событие Storage.
- Cookie. Установка, использование браузером, работа в JS.
- Идея делегирования событий.
- Атрибуты data-*. Добавление и чтение.