Vue3: тег шаблона<template>
В Vue3,<template>тег <template> — это очень важная концепция.
<template>Он используется для определения структуры шаблона компонента и служит основой для того, чтобы Vue рендерил страницы.
<template>Основная концепция тега
<template>Тег <template> — это тег в Vue3, используемый для определения шаблона компонента. Сам он не рендерится в итоговый DOM, а служит контейнером для обёртывания синтаксиса шаблонов Vue (например, интерполяции, директив и т. д.). Vue, основываясь на<template>содержимое внутри него генерирует фактическую HTML-структуру.
Особенности
- Неотображаемый тег:
<template>Сам тег не появится в итоговой структуре DOM. - Контейнер шаблона: Он используется для обёртывания синтаксиса шаблонов Vue, такого как интерполяция, условный рендеринг, рендеринг списков и т. д.
- Поддерживает несколько корневых узлов: В Vue3,
<template>тег <template> может содержать несколько корневых узлов, тогда как в Vue2 он может содержать только один.
<template>Сценарии использования тега
1. Определение шаблона компонента
В однофайловом компоненте (.vueфайл),<template>тег <template> используется для определения части шаблона компонента. Например:
Пример
<div>
<h1>{{ title }}</h1>
<p>{{ description }}</p>
</div>
</template>
<script>
export default {
data() {
return {
title: "Привет Vue3",
description: "Это пример шаблона Vue3."
};
}
};
</script>
2. Условный рендеринг
<template>Тег можно использовать сv-ifилиv-elseдирективами для реализации условного рендеринга. Например:
Пример
<div>
<template v-if="isVisible">
<p>Этот контент виден.</p>
</template>
<template v-else>
<p>Этот контент скрыт.</p>
</template>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true
};
}
};
</script>
3. Рендеринг списков
<template>Тег можно использовать сv-forдирективы для реализации рендеринга списков. Например:
Пример
<ul>
<template v-for="item in items" :key="item.id">
<li>{{ item.name }}</li>
</template>
</ul>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: "Apple" },
{ id: 2, name: "Banana" },
{ id: 3, name: "Orange" }
]
};
}
};
</script>
<template>Примечания к тегу
- Не поддерживает динамические атрибуты:
<template>Сам тег не поддерживает динамические атрибуты (такие как:classили:styleи т. д.), поскольку при рендеринге они будут проигнорированы. - Избегайте вложенного использования: хотя
<template>тег можно вкладывать, чрезмерная вложенность может снизить читаемость кода. - и
v-slotИспользование с: В Vue3,<template>тег обычно используется для определения содержимого слота, например:
Пример
<MyComponent>
<template v-slot:header>
<h1>Содержимое заголовка</h1>
</template>
<template v-slot:default>
<p>Содержимое по умолчанию</p>
</template>
</MyComponent>
</template>
Другие расширения
Vue3 Options API