Вопрос проверяет знание современных инструментов управления состоянием во Vue и понимание их эволюции.
Vuex — это классический state-менеджер для Vue. Pinia — более современное и лёгкое решение. Pinia проще в использовании и лучше работает с TypeScript. Она официально рекомендуется для новых проектов. Vuex считается устаревающим.
Vuex и Pinia решают одну задачу, но подходят к ней по-разному.
Vuex использует строгую архитектуру:
state
mutations
actions
getters
Это делает код формализованным, но более громоздким.
Pinia предлагает более простой API:
нет mutations
состояние изменяется напрямую
store описывается как обычный объект
Пример:
const useStore = defineStore('main', {
state: () => ({ count: 0 })
})
Основные отличия:
Pinia проще и лаконичнее
лучше поддерживает TypeScript
меньше шаблонного кода
легче масштабируется
В современных Vue-проектах:
Pinia используется по умолчанию
Vuex поддерживается в legacy-коде
Pinia — современная замена Vuex, ориентированная на простоту, типизацию и удобство разработки.