- Главная
- Проекты на Vue
- Планировщик задач - To‑Do List
Планировщик задач — To‑Do List
Создание динамических и отзывчивых веб-интерфейсов больше не требует сложного кода и долгой разработки. С современными фреймворками, такими как Vue.js, реализация интерактивных компонентов становится интуитивно понятной и быстрой. Этот планировщик задач (ToDo List) — наглядное тому подтверждение. Vue берет на себя всю работу по реактивности: когда вы добавляете или отмечаете задачу, интерфейс мгновенно обновляется без перезагрузки страницы, создавая плавный и современный пользовательский опыт.
Убедитесь в этом сами! Протестируйте готовый компонент ниже: добавляйте задачи, отмечайте их как выполненные, удаляйте ненужные и смотрите, как динамически меняются счетчики.
Список задач
Пока задач нет
В работе
Выполнено
Внимание! Представленный код — это готовый компонент, но для его работы на странице должен быть установлен и подключен фреймворк Vue. Если вы начинающий разработчик, просто добавьте строку <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
в раздел <head> вашего HTML, и всё заработает.
Разбор кода компонента
Чтобы вы лучше поняли, как устроен этот компонент, ниже представлены комментарии к его коду.
HTML-структура (Vue Template)
Этот шаблон определяет, как выглядит наш планировщик. Vue-директивы (атрибуты, начинающиеся с v-) делают его «живым».
v-cloak: Прячет нескомпилированные шаблоны до загрузки Vue, чтобы пользователь не видел «сырых» Mustache-тегов{{ }}.v-if / v-else: Условный рендеринг. Заголовок «Список задач» показывается только когда список пуст. Как только появляется первая задача, показывается блок с счетчикамиapp-info.v-model="task": Создает «двустороннюю привязку» между полем ввода и данными в скрипте. Когда пользователь печатает, значение переменнойtaskавтоматически обновляется.@keyup.enterи@click: Обработчики событий. Vue реагирует на нажатие клавишиEnterили клик по кнопке и вызывает соответствующий методaddItem.v-for="task in tasks": Цикл для отрисовки списка задач. Для каждого элемента в массивеtasksсоздается блок HTML.v-bind:key="task.text": Помогает Vue однозначно идентифицировать каждый узел в списке для корректного обновления.v-model="task.isActive": Связывает чекбокс со свойствомisActiveкаждой задачи. При клике состояние автоматически меняется в данных, что сразу влияет на отображение (задача перемещается между «В работе» и «Выполнено»).
Стили (CSS)
Стили обеспечивают адаптивный и визуально приятный интерфейс.
- Адаптивность: Используются современные единицы измерения, такие как
clamp()иmin(), чтобы компонент хорошо выглядел на всех устройствах — от мобильных телефонов до десктопов. - CSS Grid и Flexbox: Эти технологии макета используются для создания структурированного, гибкого и выровненного дизайна.
- Состояния элементов: Псевдокласс
:focus-visibleулучшает доступность, а селектор[v-cloak]скрывает необработанный контент.
Логика (Vue 3 Composition API)
Это «мозг» нашего приложения, написанный с использованием современного Composition API.
Реактивные данные:
tasks— это реактивный массив, где хранятся все наши задачи. Каждая задача — это объект с текстом и статусом выполнения.task— реактивная строка, которая хранит текст новой задачи из поля ввода.
Методы:
addItem()— добавляет новую задачу в массивtasks, если поле ввода не пустое.deleteItem(text)— находит и удаляет задачу по ее текстовому содержимому.deleteAll()— полностью очищает список задач.clearInput()— очищает поле ввода.
Вычисляемые свойства computed:
calcCurrent— автоматически вычисляет количество невыполненных задач. Vue сам следит за зависимостями, и значение пересчитывается только при изменении массиваtasks.calcDone— аналогично вычисляет количество выполненных задач.
Использование Composition API делает код модульным и легко расширяемым. Вся логика сосредоточена в функции setup(), что упрощает ее повторное использование и организацию.
Готовы оживить ваш проект?
Вам нужен не просто планировщик, а уникальный интерактивный элемент для вашего сайта или веб-приложения? Этот пример — лишь малая часть того, что мы можем создать.
Наша веб-студия специализируется на разработке креативных, быстрых и пользовательских интерфейсов. Мы готовы воплотить в жизнь любую вашу идею — от сложных дашбордов и анимированных виджетов до полноценных веб-приложений.
Свяжитесь с нами для бесплатной консультации!