Vuex — централизованное хранилище состояний всех маршрутов и компонентов, используемых в веб-приложении. Каждый их них будет запрашивать данные у «State Management», а потом возвращать обратно измененные. Благодаря этому уменьшается количество ошибок и повышается защищенность системы.
VUEX
Vuex — паттерн управления состоянием (State Management) и библиотека для Vue.js. В этом модуле будут храниться данные каждого компонента веб-приложения и записаны правила, по которым может меняться его состояние.
Vuex — официальное дополнение к фремворку Vue.js., легко интегрируется с ним и кроме своей основной функции управления состоянием, также дает возможность создавать слепки состояния данных и инструменты для тестирования и отладки веб-приложения.
Vue.js — JavaScript фреймворк для разработки пользовательских интерфейсов и одностраничных веб-приложений. Сейчас он занимает третье по популярности место после Angular и React. Это мощный и универсальный фреймворк, созданный для быстрого прототипирования сложных динамичных и интерактивных пользовательских интерфейсов. Vue.js — пока еще молодая технология, поэтому в ее базовой сборке есть только необходимый минимум для разработки. При этом фреймворк очень гибкий и легко интегрируется с другими библиотеками javascript. Возможность подключать решения только для нужных функций делает веб-приложения на Vue.js легкими, производительными и масштабируемыми. Vuex — одно из дополнений к фреймворку, которое упрощает, автоматизирует и систематизирует обработку данных.
Чтобы получить данные из состояния, разработчики пишут геттеры, обращающиеся к ним и сеттеры-мутации, чтобы передать измененное состояние обратно, а еще действия, которые не меняют состояние, но «мутируют». Все это позволяет приложению максимально автоматизировать работу с данными, а разработчикам в несколько раз упростить работу. Если не использовать Vuex, а хранить информацию о состояниях где-нибудь еще, то придется самостоятельно писать инструменты для чистки памяти, придумывать геттеры и сеттеры, методы извлечения конкретной информации, настраивать работу на разных страницах и многое другое. Вуекс сокращает работу до минимума — написания двух строчек кода, и делает все перечисленное автоматически и без ошибок.
Vuex необязательно быть одним большим документом. С этим инструментом вы можете разбить хранилище на несколько удобных частей. Для этого достаточно создать новую директорию или несколько и правильно их оформить, показав Vuex, что у нее теперь есть новые хранилища. Это удобно для структурирования данных и совместной работы над проектом.
Одно из достоинств Vue.js — виртуальный DOM, обновляющий только те компоненты интерфейса, состояние которых изменилось. Vuex по умолчанию поддерживает эту реактивность, автоматически вызывая изменения в DOM. Если хранить данные вне ее, то нужна отдельная функция для отслеживания изменений, а страница в любом случае будет перерисовываться полностью, что ухудшает скорость загрузки и не позволяет использовать важное преимущество фреймворка.
Vue.Js можно использовать и без Vuex, особенно в простых веб-приложениях. Тем более, что сообщество фреймворка уже создало как минимум два десятка альтернативных модулей управления состоянием, которые есть в свободном доступе на github.
Vuex обязателен для применения если вы планируете развивать свой проект. Лучше сразу начать использовать один, рекомендованный платформой, стандарт, даже если пока в нем нет необходимости, чем потом «вставлять костыли» и переделывать всю систему. Понятные механизмы управления с общей методологией в любом случае сделают работу команды проще, особенно, если она будет расти вместе с проектом.