Vue.js
Цель: изучить идеи виртуального DOM, реактивности, фреймворка, освоить на практике основы работы с Vue.js.
Содержание и порядок выполнения лабораторной работы:
- Изучить основные идеи заложенные в фреймворк Vue. Изучить синтаксис используемый в шаблонах (текстовой интерполяции, v-if, v-show, v-for и key, v-on, v-bind, v-model) и используемые сокращения директив.
- Создать новую страницу vue.html в проекте из предыдущих лабораторных работ. Добавить ссылку на эту страницу в меню макета.
- К созданной странице подключить Vue с CDN и файл для вашего кода.
- В html добавить элемент, к которому будет подключен экземпляр Vue-приложения.
- В созданный элемент добавить форму с текстовым полем для создания записей с кнопкой о добавлении новой записи и секцию для добавленных записей.



Логика работы элементов
- Пока поле в форме пустое кнопка заблокирована и это показано в том числе стилями (v-bind).
- Когда в поле появляется текст, то разблокируется кнопка и появляется счетчик до максимального числа символов (v-show + computed).
- Если символов больше заданного максимума, то показывается негативное значение и текст выделяется красным (v-bind).
- Если остается доступными от 0 до 10 символов, то счетчик желтый.
- При нажатии (v-on) кнопки добавить запись добавляется ниже (methods), а поле очищается.
- В объект записи добавить время с помощью
Date.now()
. Для нормального отображения времени использовать API интернационализации -new Intl.DateTimeFormat('ru', {year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric"}).format(date)
. - Если нет записей то текст “Нет записей”, если всего одна - “Запись”, если больше - “Записи” (v-if) и добавляется счетчик записей (v-show + computed).
- Отрисовать все добавленные записи (v-for и key).
Результаты выполнения лабораторной работы:
Результаты работы проверены наставником.
Статическая веб-страница на хостинге проверенная, со структурой и оформлением, которая соответствует требованиям и сохранена в системе контроля версий.
Источники
Вопросы для защиты
- В чем заключается идея реактивности?
- Что подразумевается под прогрессивным фреймворком?
- Чем библиотека отличается от фреймворка?
- Зачем в принципе использовать фреймворки Vue/Angular?
- Для чего используется виртуальный DOM в react/vue?
- Назовите основные директивы во Vue.
- Двустороннее и одностороннее связывание.
- Методы и вычисляемые значения.
- Разница между v-if и v-show.
- Какие есть возможности у API интернационализации Intl?