Курсы Блог Обо мне
⬅️ Назад к курсу

Vue 3 Composition API: Шаблоны и директивы с TypeScript

reactive

В этом уроке мы разберем основные шаблоны и директивы Vue 3, научимся работать с интерполяцией, условным рендерингом и списками. Все примеры используют Composition API и TypeScript — самые современные подходы во Vue-разработке

Интерполяция {{ }}

Интерполяция — вывод данных в шаблон

<template>
  <div>
    <h1>{{ title }}</h1>
    <p>Счетчик: {{ counter }}</p>
  </div>
</template>

<script setup lang="ts">
const title: string = "Vue 3 + TypeScript";
const counter: number = 0;
</script>

Как это работает:

Директива v-bind

Связывает атрибуты HTML с данными компонента

<template>
  <button 
    :class="{ active: isActive }" 
    :disabled="isDisabled"
  >
    Нажми меня
  </button>
</template>

<script setup lang="ts">
const isActive: boolean = true;
const isDisabled: boolean = false;
</script>

Ключевые моменты:

Директива v-model

Двустороннее связывание для форм

<template>
  <input v-model="message" placeholder="Введите текст">
  <p>Вы ввели: {{ message }}</p>
</template>

<script setup lang="ts">
const message: string = "";
</script>

Для кастомных компонентов

defineProps<{ modelValue: string }>();
defineEmits<{ (e: 'update:modelValue', value: string): void }>();

Условный рендеринг (v-if vs v-show)

v-if - полностью удаляет/добавляет элемент из DOM

<template>
  <div v-if="isVisible">Виден только если isVisible = true</div>
</template>

<script setup lang="ts">
const isVisible: boolean = true;
</script>

v-show - переключает CSS-свойство display

<template>
  <div v-show="isVisible">Скрыт через display: none</div>
</template>

Когда что использовать:

Работа со списками (v-for)

Работает как обычный цикл только в шаблоне

<template>
  <ul>
    <li v-for="(item, index) in items" :key="item.id">
      {{ index + 1 }}. {{ item.name }}
    </li>
  </ul>
</template>

<script setup lang="ts">
interface Item {
  id: number;
  name: string;
}

const items: Item[] = [
  { id: 1, name: "Vue" },
  { id: 2, name: "TypeScript" }
];
</script>

Важные моменты:

Заключение

Домашнее задание

frontline

FrontLine

Присоединяйтесь к нам в телеграмм

Другие интересные посты в удобном в формате

Подписаться

Другие уроки