Что такое Vue.js и почему его выбирают фронтенд-разработчики
Что такое Vue.js и почему его выбирают фронтенд-разработчики
Рассказываем о возможностях фреймворка Vue.js и приводим примеры проектов на нём. Объясняем, чем он отличается от конкурентов и как начать с ним работать.
Vue.js — это прогрессивный JavaScript-фреймворк. Он применяется для разработки пользовательских интерфейсов и одностраничных приложений (Single Page Application — SPA), например лендингов с анимацией или админ-панелей для CRM.
Vue.js создан в 2014 году Эваном Ю (Evan You), бывшим программистом Google. Он решил объединить лучшие идеи из существующих фреймворков и библиотек, например Angular и React, и создать инструмент, который был бы проще в изучении, гибче в использовании и легче по весу.
Пример структуры проекта на Vue.js:
my-vue-app/
├── index.html
├── package.json
├── vite.config.js
└── src/
├── assets/
│ └── logo.png
├── components/
│ └── HelloWorld.vue
├── App.vue
└── main.js
<template>
<HelloWorld />
</template>
<script setup>
import HelloWorld from './components/HelloWorld.vue'
</script>
// src/main.js
import { createApp } from 'vue'
import App from './App.vue'
createApp (App).mount ('#app')
Разобраться во фреймворках JavaScript поможет курс «Фронтенд-разработчик». Занятия под руководством практикующих экспертов из Яндекса и других крупных компаний позволят изучить актуальные для работодателей инструменты, в том числе HTML, CSS + SCSS, TypeScript.
Разберём, какие преимущества имеет Vue.js для фронтенд-разработчиков.
Vue.js обновляет виртуальный DOM (Document Object Model — объектную модель документа), вычисляет минимальный diff (разницу), а уже его применяет к реальному DOM. Например, при введении нового имени в поле формы оно тут же появляется в нужном месте.
Благодаря двустороннему связыванию данных переменная изменения автоматически отображается в поле ввода, и наоборот: изменения переменной меняют то, что написано в поле. Такие возможности достигаются через директиву v-model и реактивные свойства в data (), которые отслеживают изменения.
В Vue.js это реализовано через собственный фреймворк Nuxt.js. Он позволяет генерировать страницы на сервере, поддерживает деградацию и реградацию (fallback-механизмы), что имеет значение для SEO и скорости загрузки страниц. Кроме того, у самого Vue.js есть своя библиотека @vue/server-renderer для SSR.
В Vue.js можно разделить интерфейс на переиспользуемые компоненты, например кнопки, карточки или формы. Это упрощает разработку и создаёт более читаемый и удобный для повторного использования и поддержки код. Кроме того, фреймворк поддерживает однофайловые компоненты, то есть весь код: HTML-разметка, CSS-стили и логика — может храниться в одном vue-файле. Это удобно, поскольку всё, что относится к компоненту, собрано в одном месте и не нужно переключаться между разными файлами.
Директивы
Это специальные атрибуты, которые добавляются к HTML-элементам, чтобы «научить» их реагировать на изменения данных или выполнять определённые действия.
Специальные атрибуты Vue.js для DOM-элементов:
● v-if/v-show — условный рендеринг;
● v-for — рендеринг списков;
● v-bind (:) — динамическое связывание атрибутов;
● v-on (@) — обработка событий.
Когда данные нужны сразу нескольким компонентам фреймворка, их удобно хранить в глобальном хранилище — специальном объекте, доступном из любого места приложения. В этом помогают две библиотеки: Vuex — классическое решение от Vue.js и Pinia — современная, простая в использовании альтернатива. Например, в Vuex изменения происходят только через специальные функции — мутации, которые изменяют данные, и действия, которые выполняют логику перед корректировкой информации.
В Vue.js есть Vue Router — это официальная библиотека для маршрутизации. Помогает формировать разные «страницы» внутри приложения и переходить между ними. Она помогает управлять навигацией в SPA, где приложение не перезагружает страницы целиком, а только обновляет нужные части интерфейса. Динамическая загрузка позволяет загружать компоненты только тогда, когда они действительно нужны, что ускоряет загрузку приложения и повышает производительность.
Вместо того чтобы описывать данные, методы и вычисления в отдельных блоках, можно объединять всю связанную логику в одной функции — setup(). При этом есть возможность выносить повторяемую логику в отдельные функции — composables, которые можно подключать к разным компонентам.
У фреймворка есть инструменты и поддержка для разных задач. Например, он совместим с TypeScript, что помогает писать надёжный и предсказуемый код. Также в Vue.js есть инструменты разработчика, например Vue Devtools, чтобы смотреть, как работает приложение прямо в браузере. Кроме того, для создания мобильных приложений можно использовать сторонние инструменты: Capacitor или NativeScript-Vue, — чтобы писать код на Vue.js и при этом запускать мобильные приложения.
Она обеспечивается за счёт сразу нескольких технологий. Например, виртуальный DOM позволяет не обновлять страницу напрямую. Сначала фреймворк сравнивает изменения в памяти, а затем обновляет только нужные части на экране, что экономит ресурсы. Tree-shaking в Vue.js при сборке проекта автоматические удаляет неиспользуемые функции и компоненты, благодаря чему итоговый размер приложения меньше.
Фронтенд-разработчики выбирают Vue.js по ряду причин.
● Простота входа. Фреймворк легко понять новичкам: чтобы начать, достаточно просто подключить скрипт к HTML-странице — не нужно сборщиков, настройки среды или сложных зависимостей. Это позволяет быстро увидеть результат в браузере и постепенно осваивать фреймворк по мере необходимости.
● Хорошая документация. Она написана простым, понятным языком, с множеством примеров и объяснений. У начинающих фронтенд-разработчиков есть возможность быстро разобраться в базовых принципах и начать разрабатывать интерфейсы без дополнительного обучения.
● Гибкость и масштабируемость. Vue.js можно подключить как простую библиотеку, чтобы добавить интерактивности на существующий сайт, или развернуть как полноценный фреймворк для создания сложных одностраничных приложений.
● Современный подход. Vue.js поддерживает TypeScript, благодаря чему фронтенд-разработчики могут применять строгую типизацию для повышения уровня безопасности. Совместно с Composition API это помогает сделать логику приложений понятной, компоненты — переиспользуемыми, а код — читаемым.
● Постоянное развитие. У фреймворка есть активное сообщество разработчиков, которое постоянно работает над созданием новых функций, исправлением ошибок и оптимизацией производительности.
Vue.js стал своего рода ответом на доминирование React на рынке. Разберём, чем отличаются эти фреймворки.
Vue.js — это альтернатива React, которая с самого начала отличалась превосходной документацией, развитой экосистемой и простой архитектурой
Рассмотрим примеры реальных проектов, сделанных на фреймворке Vue.js.
Фронтенд-разработчики компании используют Vue.js для создания динамичных и отзывчивых интерфейсов, особенно в части взаимодействия с пользователем и внутренних инструментов. Фреймворк помогает создавать плавные и быстрые страницы, которые подгружаются без перезагрузки.
Ozon активно использует Vue.js в программировании внутренних сервисов, особенно для управления заказами. В 2024 году команда разработчиков перешла с Vue 2 на Vue 3. Для оптимизации сборки и ускорения разработки был выбран Vite, что позволило значительно повысить производительность и упростить процесс.
Чтобы начать пользоваться фреймворком, нужно сделать следующие шаги.
1. Установить фреймворк. Есть несколько способов это сделать:
● CDN
Позволяет быстро начать работу. Достаточно добавить в HTML-файл следующий код:
html
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
● Vue CLI
Этот вариант подходит для больших проектов и позволяет установить Vue CLI глобально. Нужно зайти в командную строку компьютера, на котором уже установлены Node.js и npm, и ввести следующее:
bash
npm install -g @vue/cli
Следом нужно создать проект:
bash
vue create my-vue-app
cd my-vue-app
npm run serve
● Vite
Этот способ рекомендуется для Vue.js 3, где можно быстро создать новый проект с помощью Vite. Для этого в командной строке нужно ввести:
bash
npm create vite@latest my-vue-app --template vue
cd my-vue-app
npm install
npm run dev
2. Создать первый компонент. Это можно сделать в HTML-файле или в однофайловом компоненте.
3. Изучить основные концепции. Это шаблоны с директивами (v-if, v-for, v-bind, v-on, v-model) для управления отображением и привязки данных. Кроме того, важно знать обработку событий с помощью @click и других слушателей, работу с формами через v-model, а также создание и подключение компонентов. В изучении концепций поможет официальная документация фреймворка.
4. Погрузиться в инструменты. После освоения основ Vue.js можно двигаться дальше: для управления данными в разных частях приложения стоит изучить библиотеки Pinia или Vuex, чтобы хранить состояние централизованно. Для переходов между страницами полезно подключить Vue Router, который позволяет создавать полноценные одностраничные приложения. А чтобы ускорить загрузку и улучшить SEO, можно попробовать Nuxt.js — он добавляет поддержку серверного рендеринга.
Совет эксперта
Читать также: