pinia和vuex的區(qū)別
pinia它沒(méi)有mutation,他只有state,getters,action【同步、異步】使用他來(lái)修改state數(shù)據(jù)
pinia他默認(rèn)也是存入內(nèi)存中,如果需要使用本地存儲(chǔ),在配置上比vuex麻煩一點(diǎn)
pinia語(yǔ)法上比vuex更容易理解和使用,靈活。
pinia沒(méi)有modules配置,沒(méi)一個(gè)獨(dú)立的倉(cāng)庫(kù)都是definStore生成出來(lái)的
pinia state是一個(gè)對(duì)象返回一個(gè)對(duì)象和組件的data是一樣的語(yǔ)法
Vuex 和 Pinia 的優(yōu)缺點(diǎn)
Pinia的優(yōu)點(diǎn)
完整的 TypeScript 支持:與在 Vuex 中添加 TypeScript 相比,添加 TypeScript 更容易
極其輕巧(體積約 1KB)
store 的 action 被調(diào)度為常規(guī)的函數(shù)調(diào)用,而不是使用 dispatch 方法或 MapAction 輔助函數(shù),這在 - - Vuex 中很常見(jiàn)
支持多個(gè)Store
支持 Vue devtools、SSR 和 webpack 代碼拆分
Pinia的缺點(diǎn)
不支持時(shí)間旅行和編輯等調(diào)試功能
vuex的優(yōu)點(diǎn)
支持調(diào)試功能,如時(shí)間旅行和編輯
適用于大型、高復(fù)雜度的Vue.js項(xiàng)目
vuex的缺點(diǎn)
從 Vue 3 開(kāi)始,getter 的結(jié)果不會(huì)像計(jì)算屬性那樣緩存
Vuex 4有一些與類(lèi)型安全相關(guān)的問(wèn)題
何時(shí)使用Pinia,何時(shí)使用Vuex
個(gè)人感覺(jué):
由于Pinea是輕量級(jí)的,體積很小,它適合于中小型應(yīng)用。它也適用于低復(fù)雜度的Vue.js項(xiàng)目,因?yàn)橐恍┱{(diào)試功能,如時(shí)間旅行和編輯仍然不被支持。
將 Vuex 用于中小型 Vue.js 項(xiàng)目是過(guò)度的,因?yàn)樗亓考?jí)的,對(duì)性能降低有很大影響。因此,Vuex 適用于大規(guī)模、高復(fù)雜度的 Vue.js 項(xiàng)目。
pinia和vuex在vue2和vue3都可以使用,一般來(lái)說(shuō)vue2使用vuex,vue3使用pinia。