Директивы — это особые атрибуты, которые в Petite-Vue используют для связывания DOM-элементов с функциональностью данных. Они позволяют добавлять реактивное поведение к элементам интерфейса, встраивать логику в разметку и облегчать работу с изменяющимися данными без необходимости использования сложных JavaScript-функций.
v-bind
Директива v-bind используется для динамического
связывания атрибутов HTML с данными из состояния компонента. Она
автоматически обновляет атрибуты элементов при изменении данных.
Пример использования:
<div v-bind:class="className"></div>
В данном примере класс элемента будет автоматически обновляться,
когда значение переменной className изменится.
Поддерживаются любые атрибуты, включая href,
src, style, а также собственные атрибуты
компонентов.
v-model
v-model предоставляет двустороннюю привязку данных. Это
означает, что данные, привязанные к форме (например, к текстовому полю
или переключателю), будут автоматически синхронизироваться с состоянием
компонента.
Пример:
<input v-model="message" />
<p>Текущее сообщение: {{ message }}</p>
В этом случае, значение переменной message будет
синхронизироваться с содержимым текстового поля, а любые изменения в
поле автоматически отобразятся в интерфейсе.
v-for
Директива v-for используется для итерации по массивам
или объектам. Она позволяет динамически генерировать элементы на основе
данных.
Пример:
<ul>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
Каждый элемент в массиве items будет отображаться в виде
списка. Важно использовать атрибут key, чтобы улучшить
производительность и избежать ошибок при обновлении DOM.
v-if / v-else / v-else-if
Директивы v-if, v-else-if и
v-else позволяют условно отображать элементы на основе
логических выражений. Эти директивы идеально подходят для отображения
различных частей интерфейса в зависимости от состояния приложения.
Пример:
<div v-if="isVisible">Элемент видим</div>
<div v-else>Элемент скрыт</div>
Когда значение переменной isVisible истинно,
отображается первый блок, в противном случае — второй.
v-show
v-show работает схоже с v-if, но вместо
удаления элемента из DOM, она просто меняет его CSS-свойство
display. Это делает v-show более подходящим
для часто меняющихся элементов, так как не требует повторного
рендеринга.
Пример:
<div v-show="isVisible">Этот элемент виден только если isVisible истинно</div>
Модификаторы используются для изменения поведения директив. Это суффиксы, добавляемые к директивам, чтобы уточнить их работу.
Модификатор .once
Модификатор .once используется для того, чтобы событие
или привязка данных выполнялись только один раз. После того как действие
или событие было выполнено, оно больше не будет срабатывать.
Пример:
<button v-on:click.once="doSomething">Нажми один раз</button>
Модификатор .prevent
Модификатор .prevent позволяет отменить стандартное
поведение события, например, предотвратить отправку формы.
Пример:
<form v-on:submit.prevent="submitForm">Отправить</form>
В данном случае форма не будет отправлена, пока не будет выполнена
логика, определенная в методе submitForm.
Модификатор .stop
Модификатор .stop позволяет остановить дальнейшее
распространение события. Он используется для предотвращения того, чтобы
событие всплывало в DOM или вызывало другие обработчики на родительских
элементах.
Пример:
<button v-on:click.stop="handleClick">Клик</button>
Этот пример предотвратит всплытие события click на
родительских элементах.
Модификатор .lazy
Модификатор .lazy используется для того, чтобы привязка
данных происходила не сразу, а только после того как элемент теряет
фокус или завершится ввод. Это особенно полезно для форм, чтобы избежать
частых обновлений состояния при каждом вводе символа.
Пример:
<input v-model.lazy="message" />
В Petite-Vue можно создавать собственные директивы, чтобы добавлять функциональность, которая не предусмотрена в стандартном наборе.
Пример создания пользовательской директивы:
const app = PetiteVue.createApp({
data() {
return {
color: 'red'
};
}
});
app.directive('color', (el, binding) => {
el.style.color = binding.value;
});
app.mount('#app');
В данном примере создается директива v-color, которая
изменяет цвет текста элемента в зависимости от переданного значения. Эта
директива может быть использована в шаблоне следующим образом:
<div v-color="color">Текст будет красным</div>
Директивы могут быть комбинированы друг с другом, что позволяет создавать более сложные и функциональные элементы.
Пример:
<button v-bind:disabled="isDisabled" v-on:click="doSomething">Кнопка</button>
Здесь директива v-bind:disabled управляет состоянием
кнопки, а v-on:click обрабатывает клик. Эти директивы
работают независимо друг от друга и могут быть использованы совместно
для реализации сложных логик.
Директивы в Petite-Vue предоставляют мощный и гибкий способ работы с DOM и состоянием приложения. Они позволяют связывать данные с интерфейсом, а также добавлять различные логические условия и реакции на изменения данных. Благодаря директивам можно создавать удобный и гибкий интерфейс без необходимости в написании лишнего кода.