X-Templates — это альтернативный способ определения шаблонов компонентов через специальные script-теги в HTML. Это подход, который позволяет писать шаблоны вне компонентной логики, но имеет ряд особенностей и ограничений.
X-Templates позволяют:
<script type="text/x-template">
<script type="text/x-template" id="my-template">
<div>
<h1>{{ title }}</h1>
<p>{{ content }}</p>
</div>
</script>
Vue.component('my-component', {
template: '#my-template',
data() {
return {
title: 'Приветствие',
content: 'Добро пожаловать в мир Vue!'
}
}
})
Быстрое прототипирование:
Legacy-приложения:
Демонстрационные примеры:
Чистое разделение:
Поддержка IDE:
Гибкость:
Нет scoped CSS:
Проблемы с CSP:
Меньшая производительность:
Нет поддержки в SFC:
<script type="text/x-template" id="user-list-template">
<ul>
<li v-for="user in users" :key="user.id">
{{ user.name }}
<span v-if="user.isAdmin">(Admin)</span>
</li>
</ul>
</script>
Vue.component('user-list', {
template: '#user-list-template',
data() {
return {
users: [
{ id: 1, name: 'Алиса', isAdmin: true },
{ id: 2, name: 'Боб', isAdmin: false }
]
}
}
})
Однофайловые компоненты (.vue):
Рендер-функции:
JSX:
Важные моменты:
Оптимизации:
X-Templates — это устаревший, но иногда полезный способ определения шаблонов Vue-компонентов через специальные script-блоки в HTML. Хотя они удобны для демонстраций и быстрого прототипирования, для серьезных проектов рекомендуется использовать однофайловые компоненты или рендер-функции.