12

Vue: комментарии

Vue.js APP

Цель: изучить работу с компонентами во Vue.js, SFC, передача данных от родительского компонента, дочернему и обратно, этапы жизненного цикла компонента.

Содержание и порядок выполнения лабораторной работы:

  1. Установить node.js, если этого не было сделано в прошлом семестре.
  2. Принять задание в Github Classroom https://classroom.github.com/a/B1fj8fjV. Будет просматриваться история коммитов и текст сообщений коммитов на понятность.
  3. Повторить работу с запросами и ответами. Изучить работу с server-sent events. А также использование компонентов во Vue и принципы работы с ними.
  4. Создать новый проект npm init vue@latest.
  5. Ответить на вопросы о создании проекта. В целом можете везде ответить нет.
  6. Выполнить команды npm install, npm run dev для запуска сервера разработки.
  7. Изучить описание API - http://194.67.93.117:80/api/
  8. Продумать и реализовать компоненты для добавления и отображения комментариев.
  9. Собрать проект с помощью команды npm run build и файлы из созданной папки dist перенести на сервер.

Логика работы элементов приложения

Максимальный функционал

Добавление комментария
  1. Есть форма, которая позволяет добавить новый комментарий. Для нового комментария указывается имя, текст ответа и реакция (положительный -1, нейтральный 0 - вариант по умолчанию, негативный 1).
  2. Форма отображается если нажать на кнопку “создать новый комментарий” или “ответить” под другим комментарием. От этого зависит будете ли вы передавать parendId.
  3. Валидация пользовательского ввода, так как поля обязательные для заполнения и блокировка кнопки, на время ожидания ответа от сервера.
  4. При отправке запроса требуется добавить заголовок Username, а в значении передать ваш ник на Github.
пример формы
Пример формы
Отображение комментариев
  1. На странице есть переключатель, от состояния которого зависит получаете ли вы новые комментарии в реальном времени или нет.
  2. При запуске приложения в браузере вы получаете список комментариев и подписываетесь на обновления с сервера для получение новых комментариев в реальном времени.
  3. Комментарии отрисовываются с учетом их вложенности, так как один комментарий может быть ответом на другой это определяется по полю parentId.
  4. Есть счетчик указывающий общее число комментариев.
  5. На родительском комментарии указывается количество ответов, если ответов нет, то ничего не показывается. 1. Цвет фона родительского комментария зависит от суммы реакций в ответах на него. Если отрицательная сумма, то например красный, если положительная, то зеленый.
  6. Указывается время и дата создания комментариев. Сами комментарии отображаются от старых к новым, то есть сверху старые комментарии.
пример комментариев
Пример отображения комментариев

Что можно упростить

Упрощения сказываются на максимальном бале за практическую часть.

  1. Отказаться от получения комментариев в реальном времени. В этом случае получаете новый список комментариев, после отправки нового.
  2. Отказаться от вложенности комментариев.
  3. Отказаться от отображения цвета комментария.
  4. Отказаться от счетчика ответов.
  5. Отказаться от валидации.

Критерии

  1. RWD от 375px до 2560px, mobile-first.
  2. Доступность: цвета, доступ с клавиатуры, предсказуемость, текстовый контент и т.д.
  3. БЭМ
  4. Внешний вид: отступы, выравнивание, пропорции.
  5. SVG для иконок.

Результаты выполнения лабораторной работы:

Статическая веб-страница на хостинге проверенная, со структурой и оформлением, которая соответствует требованиям и сохранена в системе контроля версий.

Источники

Вопросы для защиты

  1. Как создать новое Vue приложение.
  2. Что такое SFC. Из чего состоит.
  3. Как создать и подключить компонент.
  4. Этапы жизненного цикла компонента.
  5. На каком этапе стоит получать данные и почему.
  6. Как передавать информацию между компонентами.
  7. Пользовательские события и их обработка.
  8. Slot и их использование.
  9. Что такое server-sent events.
  10. Использование EventSource.

и остальные из всего курса за текущий семестр.

Распределение баллов

За практику максимум 20 баллов.

За ответы на вопросы максимум 10 баллов.