Синтаксис шаблонов Vue3
Vue использует синтаксис шаблонов на основе HTML, который позволяет разработчикам декларативно связывать DOM с данными базового экземпляра Vue.
В основе Vue лежит система, которая позволяет декларативно отображать данные в DOM с помощью лаконичного синтаксиса шаблонов.
В сочетании с системой реактивности, когда состояние приложения изменяется, Vue может интеллектуально вычислять минимальную стоимость повторного рендеринга компонентов и применять её к операциям DOM.
Пример
<div>
<!--Интерполяция-->
<p>{{ message }}</p>
<!-- v-bind -->
<a :href="url">Ссылка</a>
<!-- v-на -->
<button @click="handleClick">Нажми меня</button>
<!-- v-for -->
<ul>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
</div>
</template>
Интерполяция
Текст
Наиболее распространённая форма привязки данных — использование{{...}}текстовой интерполяции с двойными фигурными скобками:
{{...}}Содержимое тега будет заменено значением свойстваmessageсоответствующего экземпляра компонента; если значение свойстваmessageизменится,{{...}}содержимое тега также обновится.
Если вы не хотите изменять содержимое тега, можно использоватьv-onceдирективу для выполнения однократной интерполяции. Когда данные изменятся, содержимое в точке интерполяции не обновится.
<span v-once>这个将不会改变: {{ message }}</span>
Html
Используйте директиву v-html для вывода HTML-кода:
Директива v-html
Попробуйте сами »
Атрибуты
Для значений в HTML-атрибутах следует использовать директиву v-bind.
<div v-bind:id="dynamicId"></div>Для булевых атрибутов традиционными значениями являются true или false. Если значение атрибута — null или undefined, атрибут не будет отображаться.
<button v-bind:disabled="isButtonDisabled">按钮</button>
В приведённом выше коде, если значение isButtonDisabled равно null или undefined, атрибут disabled даже не будет включён в отрендеренный элемент <button>.
В следующем примере проверяется значение use. Если оно true, используется стиль class1; в противном случае этот класс не используется:
Директива v-bind
Попробуйте сами »
Выражения
Vue.js обеспечивает полную поддержку выражений JavaScript.
Выражения JavaScript
Попробуйте сами »
Выражения анализируются как JavaScript в области данных текущего активного экземпляра. Есть ограничение: каждая привязка может содержать только одно выражение, поэтому следующие примеры не будут работать:
<!-- 这是语句,不是表达式:-->
{{ var a = 1 }}
<!-- 流控制也不会生效,请使用三元表达式 -->
{{ if (ok) { return message } }}
Директивы
Директивы — это специальные атрибуты с префиксом v-.
Директивы используются для применения определённого поведения к DOM, когда значение выражения изменяется. См. следующий пример:
Пример
Попробуйте сами »
Здесь директива v-if решит, вставлять ли элемент p, исходя из значения выражения seen (true или false).
Существует много других директив, каждая с определённой функцией. Например, директива v-for может привязывать данные из массива для отображения списка элементов:
Пример
<ol>
<li v-for="site in sites">
{{ site.text }}
</li>
</ol>
</div>
<script>
const app = {
data() {
return {
sites: [
{ text: 'Google' },
{ text: 'Example' },
{ text: 'Taobao' }
]
}
}
}
Vue.createApp(app).mount('#app')
</script>
Попробуйте сами »
Аргументы
Аргументы указываются после директивы с помощью двоеточия. Например, директива v-bind используется для реактивного обновления атрибутов HTML:
Пример
Попробуйте сами »
Здесь href — это аргумент, указывающий директиве v-bind привязать атрибут href элемента к значению выражения url.
Другой пример — директива v-on, которая используется для прослушивания событий DOM:
<!-- 完整语法 --> <a v-on:click="doSomething"> ... </a> <!-- 缩写 --> <a @click="doSomething"> ... </a> <!-- 动态参数的缩写 (2.6.0+) --> <a @[event]="doSomething"> ... </a>
Здесь аргументом является имя прослушиваемого события.
Модификаторы
Модификаторы обозначаются точкой половинной ширины.как специальные суффиксы, используемые для указания, что директиву следует привязать особым образом. Например,.preventМодификатор указывает директивеv-onвызвать для вызванного событияevent.preventDefault():
<form v-on:submit.prevent="onSubmit"></form>
Пользовательский ввод
В поле ввода мы можем использовать директиву v-model для реализации двусторонней привязки данных:
Двусторонняя привязка данных
Попробуйте сами »
v-modelДиректива используется для создания двусторонней привязки данных к элементам управления формы, таким как input, select, textarea, checkbox и radio. Основываясь на значениях в форме, она автоматически обновляет значения связанных элементов.
Для событий кнопок мы можем использовать v-on, чтобы прослушивать события и реагировать на ввод пользователя.
Следующий пример переворачивает строку после того, как пользователь нажимает кнопку:
Обращение строки
Попробуйте сами »
Сокращения
Сокращение v-bind
Vue.js предоставляет специальные сокращения для двух наиболее часто используемых директив:
<!-- 完整语法 --> <a v-bind:href="url.html"></a> <!-- 缩写 --> <a :href="url.html"></a>
Сокращение v-on
<!-- 完整语法 --> <a v-on:click="doSomething"></a> <!-- 缩写 --> <a @click="doSomething"></a>Другие расширения