логотип 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 не навязывает архитектуру, но предоставляет все инструменты для её построения. Это делает его особенно удобным для команд, которые хотят контролировать сложность приложения без лишнего формализма.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile

Комментарии

0

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile