Vue.js — прогрессивный JavaScript-фреймворк, ориентированный на построение пользовательских интерфейсов. Центральная идея Vue заключается в реактивности данных и декларативном подходе к построению интерфейса. Реактивность означает автоматическое обновление DOM при изменении состояния приложения.
Для создания нового Vue-приложения чаще всего используют инструмент Vue CLI или современный Vite. Vite обеспечивает более быструю сборку и горячую перезагрузку модулей.
Пример создания проекта с помощью Vite:
npm create vite@latest my-vue-app
cd my-vue-app
npm install
npm run dev
Структура проекта включает:
src/main.js — точка входа приложения, где создаётся
экземпляр Vue.src/App.vue — корневой компонент.src/components/ — каталог для всех дочерних
компонентов.В main.js создается приложение Vue и монтируется на
DOM:
import { createApp } from 'vue';
import App from './App.vue';
createApp(App).mount('#app');
Ключевые моменты:
Компоненты в Vue — это переиспользуемые блоки интерфейса. Они могут
быть как глобальными, так и локальными. Структура однофайлового
компонента (.vue) включает три секции:
<template>
<div>
<h1>{{ title }}</h1>
<button @click="increment">Нажми меня</button>
<p>Счётчик: {{ count }}</p>
</div>
</template>
<script>
export default {
data() {
return {
title: 'Пример Vue-компонента',
count: 0
};
},
methods: {
increment() {
this.count++;
}
}
};
</script>
<style scoped>
h1 {
color: #42b983;
}
</style>
data().Vue использует реактивную систему на основе Proxy.
Данные, определённые в data(), автоматически отслеживаются.
Привязка к DOM осуществляется через:
{{ count }}v-bind,
v-model, v-if, v-forv-on:click или сокращённо
@clickПример использования директив:
<input v-model="title" placeholder="Введите текст" />
<p v-if="title">Вы ввели: {{ title }}</p>
<ul>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
:key.Компоненты можно подключать локально или глобально.
Локальная регистрация:
import MyComponent from './components/MyComponent.vue';
export default {
components: {
MyComponent
}
};
Глобальная регистрация:
import { createApp } from 'vue';
import App from './App.vue';
import MyComponent from './components/MyComponent.vue';
const app = createApp(App);
app.component('MyComponent', MyComponent);
app.mount('#app');
Для связи родителя и дочернего компонента используются props и events.
Props — передача данных в дочерний компонент:
<ChildComponent :message="parentMessage" />
В дочернем компоненте:
export default {
props: ['message']
};
События — отправка данных от дочернего компонента родителю:
<button @click="$emit('notify', 'Привет родителю')">Отправить</button>
В родителе:
<ChildComponent @notify="handleNotify" />
Для многостраничных приложений используется Vue Router. Он обеспечивает маршрутизацию и поддержку динамических страниц.
Установка:
npm install vue-router
Пример конфигурации маршрутов:
import { createRouter, createWebHistory } from 'vue-router';
import Home from './views/Home.vue';
import About from './views/About.vue';
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About }
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
В main.js:
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
createApp(App).use(router).mount('#app');
Для управления глобальным состоянием применяется Pinia (современная альтернатива Vuex).
Установка Pinia:
npm install pinia
Создание стора:
import { defineStore } from 'pinia';
export const useCounterStore = defineStore('counter', {
state: () => ({
count: 0
}),
actions: {
increment() {
this.count++;
}
}
});
Использование в компоненте:
import { useCounterStore } from '../stores/counter';
export default {
setup() {
const counter = useCounterStore();
return { counter };
}
};
Vue поддерживает два подхода к разработке компонентов:
data, methods, computed.setup() и реактивными объектами ref и
reactive.Пример Composition API:
import { ref } from 'vue';
export default {
setup() {
const count = ref(0);
const increment = () => {
count.value++;
};
return { count, increment };
}
};
Vue-приложение состоит из:
main.js) — создание и
монтирование приложения.App.vue) —
оболочка всех компонентов.components/) —
переиспользуемые блоки UI.router/) — управление
навигацией.store/) — централизованное
управление данными.assets/) — CSS,
изображения, шрифты.Правильная организация кода и использование реактивной системы Vue позволяет создавать масштабируемые и производительные интерфейсы, легко поддерживаемые и расширяемые.