Hack Frontend Community

Что такое Vue.js?

Vue.js — это прогрессивный JavaScript-фреймворк для создания пользовательских интерфейсов. Он прост в освоении, но при этом мощный и гибкий, что делает его отличным выбором как для небольших проектов, так и для крупных веб-приложений.


Основные преимущества Vue.js

  • Простота и удобство

    Vue.js разработан с упором на удобство использования. Его синтаксис интуитивно понятен, а документация детально описывает все возможности.

Note:

Vue часто сравнивают с React и Angular: он легче и проще в освоении, чем Angular, но при этом предоставляет более структурированный подход, чем React.

  • Высокая производительность

    Размер Vue.js (~20KB) меньше, чем у React или Angular, а его виртуальный DOM обеспечивает быстрый рендеринг.

  • Реактивность

    Vue использует реактивную систему данных. Если данные изменяются, Vue автоматически обновляет интерфейс без необходимости вручную манипулировать DOM.

  • Компонентный подход

    Vue использует реактивную систему данных. Если данные изменяются, Vue автоматически обновляет интерфейс без необходимости вручную манипулировать DOM.

<template>
  <button @click="sayHello">Нажми меня</button>
</template>

<script setup>
  const sayHello = () => {
    alert('Привет!');
  };
</script>
  • Двунаправленное связывание данных (Two-way data binding)

    В отличие от React, Vue поддерживает двустороннее связывание данных (v-model), что упрощает работу с формами.

<template>
  <input v-model="name" placeholder="Введите имя" />
  <p>Привет, {{ name }}</p>
</template>

<script setup>
import { ref } from 'vue';

const name = ref('');
</script>
  • Модульность и экосистема

    Vue легко интегрируется с другими технологиями и предлагает мощные инструменты:

    • Vue Router — управление маршрутами (страницами).
    • Vuex / Pinia — управление глобальным состоянием.
    • Vue CLI & Vite — быстрая настройка и разработка.
  • SSR и PWA Vue поддерживает серверный рендеринг (SSR) с Nuxt.js и позволяет создавать прогрессивные веб-приложения (PWA).

  • Хорошая документация и поддержка сообщества Документация Vue проста и понятна, а большое сообщество активно помогает новичкам.


Как работает Vue.js?

Важно помнить:

Vue.js — это реактивный фреймворк, который работает по принципу "Data-Driven View". Это означает, что интерфейс (UI) автоматически обновляется, когда изменяются данные.

Основные механизмы работы Vue.js

  1. Создание экземпляра Vue
  2. Реактивность и обновление DOM
  3. Компонентный подход
  4. Двунаправленное связывание (v-model)
  5. Виртуальный DOM
1

Создание экземпляра Vue

Каждое Vue-приложение начинается с создания экземпляра Vue.createApp().

<script setup>
import { ref } from 'vue';

const message = ref('Привет, Vue!');
</script>

<template>
    <h1>{{ message }}</h1>
</template>

Что здесь происходит?

  • ref('Привет, Vue!') делает переменную message реактивной.
  • Внутри <template> используется {{ message }}, и Vue автоматически обновит DOM при изменении message.
2

Реактивность и обновление DOM

Vue использует реактивную систему для отслеживания изменений в данных.

<script setup>
import { ref } from 'vue';

const count = ref(0);

const increment = () => {
count.value++;
};
</script>

<template>
  <p>Счетчик: {{ count }}</p>
  <button @click="increment">+</button>
</template>

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

  • count — это реактивное состояние созданное через ref.
  • Когда count изменяется (count.value++), Vue автоматически обновляет HTML {{ count }} в template.
3

Компонентный подход

Vue-приложение строится из **переиспользуемых*8 компонентов.

▶ Родительский компонент (App.vue)

<template>
<Counter />
</template>

<script setup>
import Counter from './Counter.vue';
</script>

▶ Дочерний компонент (Counter.vue)

<script setup>
import { ref } from 'vue';

const count = ref(0);
const increment = () => count.value++;
</script>

<template>
<button @click="increment">Счет: {{ count }}</button>
</template>

Vue разбивает приложение на маленькие блоки (компоненты), которые можно переиспользовать.

4

Двунаправленное связывание (v-model)

Vue поддерживает двустороннее связывание данных и интерфейса.

<script setup>
import { ref } from 'vue';

const name = ref('');
</script>

<template>
  <input v-model="name" placeholder="Введите имя" />
  <p>Привет, {{ name }}!</p>
</template>

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

  • Когда пользователь вводит текст в <input>, name обновляется.
  • Так как name реактивный, Vue автоматически обновляет <p>Привет, ...</p>.
5

Виртуальный DOM

Vue использует виртуальный DOM для быстрого обновления интерфейса.

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

  • Vue не обновляет весь DOM, а только измененные части.
  • Vue создает виртуальную копию DOM, сравнивает ее с текущим состоянием и обновляет только измененные элементы.
  • Это делает работу Vue быстрее, чем при стандартной манипуляции DOM.