玩转 Vue 3 全家桶
大圣
前百度前端架构师
38321 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
玩转 Vue 3 全家桶
15
15
1.0x
00:00/00:00
登录|注册

36|数据流原理:Vuex & Pinia源码剖析

使用Pinia的场景
自定义Composition
provide/inject
源码中包含性能优化和适配Vue 2的语法
支持Composition API和Option API
Pinia提供了易用的API
Pinia作为Vuex5的实现,已成为Vue官方项目
Pinia基于Vuex5提案设计
Vuex5提案改进了Vuex4的缺点
存储和获取store实例
触发数据更新
实现$patch函数
创建store对象
缓存store实例
创建store实例
获取Pinia实例
定义store
支持Vue Devtools
实现插件机制
支持app.use注册
创建响应式数据对象state
创建作用域对象
支持Composition风格的store创建
使用actions配置数据修改方法
使用state返回响应式对象
使用defineStore定义store
创建store
注册Pinia实例
安装Pinia
体积小(1KB)
易扩展
Vue Devtools支持
类型安全
支持自动代码分割
支持TypeScript类型推导
去掉namespace功能
去掉Mutation概念
数据共享语法选择
Pinia的使用和原理
Vuex5提案与Pinia实现
createOptionsStore和createSetupStore
defineStore方法
createPinia函数
语法
安装与使用
优点
Vue官方项目
讨论过程在GitHub issue中进行
支持Composition API和Option API
解决Vuex4痛点
思考
总结
Pinia源码剖析
Pinia
Vuex5提案
Vuex & Pinia 源码剖析

该思维导图由 AI 生成,仅供参考

你好,我是大圣。
上一讲我们分析了 Vite 原理,今天我们来剖析 Vuex 的原理。其实在之前的课程中,我们已经实现过一个迷你的 Vuex,整体代码逻辑比较简单,基于 Vue 提供的响应式函数 reactive 和 computed 的能力,我们封装了一个独立的共享数据的 store,并且对外暴露了 commit 和 dispatch 方法修改和更新数据,这些原理就不赘述了。
今天我们探讨一下下一代 Vuex5 的提案,并且看一下实际的代码是如何实现的,你学完之后可以对比之前 gvuex mini 版本,感受一下两者的区别。

Vuex5 提案

由于 Vuex 有模块化 namespace 的功能,所以模块 user 中的 mutation add 方法,我们需要使用 commit('user/add') 来触发。这样虽然可以让 Vuex 支持更复杂的项目,但是这种字符串类型的拼接功能,在 TypeScript4 之前的类型推导中就很难实现。然后就有了 Vuex5 相关提案的讨论,整个讨论过程都是在 GitHub 的 issue 里推进的,你可以访问GitHub 链接去围观。
Vuex5 的提案相比 Vuex4 有很大的改进,解决了一些 Vuex4 中的缺点。Vuex5 能够同时支持 Composition API 和 Option API,并且去掉了 namespace 模式,使用组合 store 的方式更好地支持了 TypeScript 的类型推导,还去掉了容易混淆的 Mutation 和 Action 概念,只保留了 Action,并且支持自动的代码分割
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了Vuex5的提案以及Pinia的原理和使用方法。Vuex5相比Vuex4有显著改进,支持Composition API和Option API,去除了namespace模式,更好地支持了TypeScript的类型推导。Pinia作为Vue的官方项目,具有类型安全、Vue的Devtools支持、易扩展、只有1KB的体积等优点。文章通过对Pinia的源码进行解析,展示了Pinia的创建和使用方法,以及如何定义和使用store。通过对Pinia的createPinia、defineStore和createSetupStore等方法的分析,读者可以深入了解Pinia的内部实现和原理。总的来说,本文通过对Vuex和Pinia的原理和使用方法进行剖析,帮助读者了解了这两个状态管理工具的特点和使用方式。文章内容深入浅出,适合对Vue状态管理工具感兴趣的读者阅读。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《玩转 Vue 3 全家桶》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • james
    没有关联的组件之间可以使用 pinia
    2022-01-13
    3
  • 李增
    createSetupStore 函数的实现分析部分,有点收尾匆忙了,只说了重点,没有完整捋清楚createSetupStore 的完整实现细节。对于能自己去阅读源码的人来说,倒是没啥,但是对于底子差点的人来说,就很难懂createSetupStore 函数的整个内部实现运作原理了。大圣老师是否可以再补充下这一块的细节哈~
    2022-03-27
    3
    2
  • 浣花公子
    嗯 这个写法就很像 React + Redux + immer
    2022-10-28归属地:吉林
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部