Тип | Бібліотека управління станом |
---|---|
Автори | Едуардо Сан Мартін Мороте |
Перший випуск | листопад 2019 |
Стабільний випуск | 2.0.29 (2023) |
Платформа | Веб платформа |
Мова програмування | TypeScript |
Розмір | ~1.5 KB |
Ліцензія | MIT License |
Репозиторій | github.com/vuejs/pinia |
Вебсайт | pinia.vuejs.org |
Pinia (вимовляється /piːnjʌ/, або «peenya» англійською) — це бібліотека сховищ та фреймворк управління станом для Vue.js.[1] Розроблена в першу чергу для створення інтерфейсних веб-додатків, вона використовує декларативний синтаксис і пропонує власний API для управління станами. Pinia була схвалена командою Vue.js як надійна альтернатива Vuex і наразі є офіційною бібліотекою управління станом для Vue.[2]
На відміну від Vuex, Pinia має модульний дизайн і не передбачає мутації (mutations
). Це дозволяє розробникам створювати численні сховища та імпортувати їх у компоненти за потреби. Фреймворк надає централізоване сховище з вбудованим механізмом збереження, оновлення та отримання стану програми.[3]
Pinia була задумана розробником Vue Едуардо Сан Мартін Мороте[4] як дослідження того, як Vuex може виглядати в майбутньому.[5] Це передбачало створення простішого API з «меншою кількістю церемоній» і кращою підтримкою виведення типів за допомогою TypeScript.[6] 7 лютого 2022 року він став офіційною частиною екосистеми Vue.js[5]
Стор бібліотека (store library) походить від іспанського слова piña, що означає «ананас». За словами її творців, «ананас — це насправді група окремих квіток, які з'єднуються разом, щоб створити кілька плодів. Подібно до сторів, кожен з них народжується окремо, але всі вони з'єднуються в кінці».[7]
Стори в Pinia визначаються за допомогою JavaScript-об'єкта з різноманітними характеристиками, які керують їхньою поведінкою. Вони вважаються «стовпами» стору і, як показано в прикладі коду нижче, включають id
, state
, getters
і actions
.[8]
import { createStore } from 'pinia'
export const useCounterStore = createStore({
id: 'counter',
state: () => ({
count: 0
}),
getters: {
doubleCount: state => state.count * 2
},
actions: {
increment(amount) {
this.state.count += amount
}
}
})
Pinia інтегрується з Vue Devtools, популярним розширенням для налагодження Vue.js додатків.[9]
Фреймворк включає підтримку багатьох плагінів, включаючи Nuxt та вищезазначені Devtools.[10]
Pinia дозволяє розробникам зберігати існуючі стейти (states
) під час написання коду та змінювати стори без перезавантаження сторінки.