Що таке шаблон компонента?
Шаблон компонента (template) - це частина Vue-компонента, яка описує його HTML-структуру, тобто те, як компонент виглядає на екрані.
Це декларативний спосіб вказати, який інтерфейс потрібно відобразити, використовуючи:
- звичайний HTML,
- директиви Vue (
v-if,v-for,v-model), - вирази (
{{ }}), - інші компоненти.
Простіше кажучи: шаблон - це "верстка" компонента, пов'язана з його даними і логікою.
Де оголошується шаблон?
У Single File Component (SFC) - у блоці <template>:
<template>
<div>
<h1>{{ title }}</h1>
<button @click="count++">Clicked {{ count }} times</button>
</div>
</template>У цьому шаблоні:
{{ title }}і{{ count }}- прив'язуються до стану в<script>@click="count++"- реактивна подія<div>і<button>- звичайний HTML
Як шаблон пов'язаний з логікою?
У шаблоні ми можемо використовувати дані, обчислювані властивості, методи, пропси, оголошені в <script>.
Приклад:
<template>
<p>Hello, {{ name }}</p>
<button @click="sayHi">Say Hi</button>
</template>
<script setup>
import { ref } from 'vue'
const name = ref('Timur')
function sayHi() {
console.log(`Hi, ${name.value}!`)
}
</script>Шаблон "бачить" усі змінні з <script setup>.
Які можливості є у шаблону?
Інтерполяція даних
{{ message }}Директиви
<div v-if="isVisible"></div>
<li v-for="item in items">{{ item }}</li>
<input v-model="text">Прив'язки
<img :src="imageUrl">
<button :disabled="isLoading">Save</button>Події
<button @click="handleClick"></button>Слоти
<Modal>
<template #header>Title</template>
</Modal>Використання інших компонентів
<UserCard :user="user" />Альтернативи шаблону
У Vue можна використовувати render-функцію (JS замість HTML), але у 99% випадків використовують <template>, оскільки він:
- простіший,
- зрозуміліший,
- коротший,
- підтримує підсвітку і автодоповнення.
Приклад цілого компонента з шаблоном
<template>
<div class="counter">
<p>Count: {{ count }}</p>
<button @click="increment">+1</button>
</div>
</template>
<script setup>
import { ref } from 'vue'
const count = ref(0)
function increment() {
count.value++
}
</script>
<style scoped>
.counter {
padding: 10px;
}
</style>Підсумок (шпаргалка)
Шаблон компонента (template) - це структура HTML-розмітки компонента, у якій використовуються:
- дані зі скрипта,
- директиви,
- події,
- реактивні вирази,
- слоти,
- інші компоненти.
Він визначає, як компонент виглядає і як реагує на зміни даних.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.