Vuex vs Pinia
状态管理该用哪个?
Vuex 有什么问题?
- 冗余:Mutation(同步)、Action(异步)分得很细,写起来繁琐
- TS 支持差:类型推导麻烦
- 模块化痛点:字符串路径易错,难以 Tree-shaking
Pinia 强在哪?
为 Composition API 设计:
- 极简 API:只有 State、Getters、Actions。去掉了 Mutations。Action 支持同步/异步
- TS 支持好:完全 TS 重写,类型推导丝滑
- 独立 Store:每个 Store 是独立模块,用到哪个加载哪个
- 体积小:小于 1KB
- SSR 支持好:原生支持,解决 Vuex 的序列化问题
怎么选?
- 新项目:直接用 Pinia
- 老项目:Vuex 4 还能用,新模块可以用 Pinia(两者可以共存)
总结
| Vuex | Pinia |
|---|
| API | 繁琐 | 极简 |
| Mutations | 有 | 无 |
| TS | 差 | 好 |
| Store | 集中 | 独立 |
| 体积 | 大 | 小 |
| 推荐 | 老项目 | 新项目 |