Vue.js предоставляет мощный набор встроенных
директив, которые позволяют управлять DOM-элементами напрямую
из шаблонов. Директивы начинаются с префикса v- и
представляют собой специальные атрибуты, которые связывают данные с
поведением элементов.
v-if,
v-else-if, v-elsev-if используется для условного
рендеринга элементов. Элемент с этой директивой добавляется в DOM только
при выполнении указанного условия.
<div v-if="isLoggedIn">Вы вошли в систему</div>
<div v-else>Пожалуйста, войдите</div>
v-else-if позволяет создавать цепочки
условий, аналогичные else if в JavaScript.v-else обязательно следует сразу за
v-if или v-else-if и рендерится, если все
предыдущие условия ложны.v-show, который лишь
изменяет CSS-свойство display.v-showv-show управляет видимостью элемента с
помощью CSS.
<div v-show="isVisible">Этот блок можно скрыть</div>
display.v-forv-for используется для рендеринга
списков и массивов.
<ul>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
v-for="(item, index) in array" или
v-for="(value, key) in object".:key необходим для оптимизации
рендеринга и правильного отслеживания элементов при изменении
данных.v-bindv-bind связывает атрибуты элемента с
данными компонента.
<img v-bind:src="imageUrl" alt="Описание изображения">
:src="imageUrl".v-modelv-model обеспечивает двустороннее
связывание данных для форм.
<input v-model="username" placeholder="Введите имя">
<input>,
<textarea>, <select> и кастомными
компонентами..lazy,
.number, .trim.<input v-model.lazy="username">
<input v-model.number="age">
<input v-model.trim="comment">
v-onv-on используется для привязки событий
к методам компонента.
<button v-on:click="handleClick">Нажми меня</button>
Сокращённая запись: @click="handleClick".
Позволяет использовать любые DOM-события:
@mouseover, @keydown,
@submit.
Поддерживает модификаторы для управления поведением события:
.prevent – предотвращает стандартное действие..stop – останавливает всплытие..capture, .self, .once,
.passive.<form @submit.prevent="submitForm"></form>
<button @click.stop="doSomething"></button>
v-prev-pre отключает реактивность для
указанного блока и рендерит его как сырой текст.
<span v-pre>{{ thisWillNotBeRendered }}</span>
v-cloakv-cloak используется для скрытия
содержимого до момента, когда Vue полностью инициализировал
компонент.
<div v-cloak>{{ message }}</div>
[v-cloak] { display: none; }
v-oncev-once рендерит элемент только один раз
и больше не отслеживает изменения данных.
<span v-once>{{ message }}</span>
v-text и
v-htmlv-text заменяет содержимое элемента
текстом без интерполяции HTML.<p v-text="plainText"></p>
v-html позволяет вставлять
HTML-содержимое.<div v-html="rawHtml"></div>
v-html требует осторожности: необходимо
избегать вставки непроверенного HTML, чтобы предотвратить
XSS-атаки.Директивы могут комбинироваться для достижения сложной логики:
<ul>
<li v-for="item in items" v-if="item.visible" :key="item.id">{{ item.name }}</li>
</ul>
item.visible истинно.v-for, затем
v-if.v-if vs v-show) имеют
различную производительность в зависимости от сценариев использования:
динамическая замена элементов или частое переключение видимости.Эта система встроенных директив позволяет строить динамичные интерфейсы с минимальным количеством ручного кода, делая шаблоны Vue мощными, читаемыми и поддерживаемыми.