логотип PurpleSchool
логотип PurpleSchool

Что такое Vuejs и как он устроен?

Картинка поста Что такое Vuejs и как он устроен?

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

Зачем нужен Vue и чем он отличается от библиотеки

Vue — это не просто библиотека рендеринга. Это полноценный фреймворк, включающий:

  • реактивную модель данных;
  • систему компонентов;
  • шаблонный движок;
  • маршрутизацию (через vue-router);
  • управление состоянием (через pinia);
  • сборку (через vite).

В отличие от React, Vue использует декларативный синтаксис шаблонов на основе HTML. Это снижает порог входа и делает код ближе к верстке.

Основные принципы Vue.js

1. Декларативное связывание данных

Vue автоматически связывает данные с DOM и обновляет его при изменении состояния. Связь между моделью и представлением осуществляется через шаблонный синтаксис:

<template>
  <p>Привет, {{ name }}!</p>
</template>

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

export default {
  setup() {
    const name = ref('Мир'); // реактивное свойство

    // Можно добавить функции или логику для изменения name, если нужно

    return {
      name,
    };
  }
};
</script>

При изменении this.name, Vue сам обновит DOM без участия разработчика.

2. Реактивность

Реактивность — фундамент Vue. Объекты, созданные через reactive или ref, автоматически отслеживаются:

import { ref } from 'vue';

const count = ref(0);
count.value++; // Vue отслеживает это изменение

Компоненты "подписаны" на эти данные и перерисуются, когда значение изменится.

3. Система компонентов

Vue разбивает интерфейс на независимые и переиспользуемые компоненты. Каждый компонент инкапсулирует HTML, JS и CSS:

<template>
  <p>Привет, {{ props.name }}!</p>
</template>

<script>
import { defineComponent } from 'vue';

export default defineComponent({
  props: {
    name: {
      type: String,
      default: 'Мир'
    }
  },
  setup(props) {
    return {
      props
    };
  }
});
</script>

Компоненты могут быть вложенными и принимать входные параметры (props), как функции.

4. Директивы

Vue расширяет HTML с помощью директив — специальных атрибутов с префиксом v-:

  • v-if, v-else, v-show — условный рендеринг
  • v-for — циклы
  • v-model — двустороннее связывание форм

Пример v-for:

<ul>
  <li v-for="(item, i) in items" :key="i">{{ item }}</li>
</ul>

5. Обработка событий

Vue позволяет просто обрабатывать события с помощью v-on или сокращения @:

<template>
  <button @click="count++">+</button>
  <p>Количество: {{ count }}</p>
</template>

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

export default {
  setup() {
    const count = ref(0); // реактивное число

    return {
      count,
    };
  }
};
</script>

6. Стилизация и изоляция

Каждый .vue-компонент может включать собственные стили:

<style scoped>
p {
  color: red;
}
</style>

scoped ограничивает стиль только текущим компонентом.

Как устроен Vue?

Vue 3 использует Proxy для реализации реактивности. Это позволяет перехватывать доступ к значениям и автоматически вызывать обновления. Когда вы обращаетесь к reactive-объекту, Vue отслеживает зависимость. При изменении значения — уведомляет связанные эффекты (например, шаблон компонента), чтобы они перерендерились.

Пример на низком уровне:

import { ref } from 'vue';

export default {
  setup() {
    const count = ref(0); // реактивное число

    return {
      count,
    };
  }
};

Эта система делает обновление DOM точечным и эффективным.

Переход от простого к сложному

Vue хорош тем, что позволяет начать с простого кода и при необходимости масштабироваться:

  • небольшие приложения: <script>
    • CDN;
  • SPA с маршрутизацией: vue-router, pinia;
  • SSR-приложения: Nuxt.js;
  • корпоративные интерфейсы: TypeScript, кастомные компоненты, архитектура на слоях.

Заключение

Vue.js — это гибкий, понятный и мощный инструмент для создания современных интерфейсов. Его сильные стороны — декларативность, реактивность и простота старта. Вы можете использовать его как виджет в существующем проекте или построить крупную SPA с маршрутизацией и состоянием. Vue не навязывает архитектуру, но предоставляет все инструменты для её построения. Это делает его особенно удобным для команд, которые хотят контролировать сложность приложения без лишнего формализма.

Комментарии

0

Постройте личный план изучения TypeScript с нуля - полный курс и паттерны проектирования до уровня Middle — бесплатно!

TypeScript с нуля - полный курс и паттерны проектирования — часть карты развития Frontend, Backend, Mobile

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Лучшие курсы по теме

изображение курса

React и Redux Toolkit

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Zustand

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Neovim

Антон Ларичев
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее