前面的文章分析了
Redux
的源码和Api,作为前端三大框架的Vue
当然也少不了状态管理工具——Vuex
,下面的几篇文章就来对Vuex
及其常用Api进行一下源码分析
Store
在平时开发使用vuex
的时候,都会实例化一个Store
,即new Vuex.Store
,里面传入state
、getters
、actions
,mutations
等相关属性,正是在这个过程中,vuex
会初始化Store
,下面就来看一下Store
这个类的源码(部分代码已删减,只保留核心功能),遇到调用的某个方法,请到下面查看对应的源码分析
1 | class Store { |
Store
类还是很简单的,其内部主要是做一些初始化的操作。下面来看看主要的函数源码:
ModuleCollection
1 | /* |
Module
1 | /* |
forEachValue
1 | /* |
installModule
1 | /* |
makeLocalContext
1 | /* |
registerMutation、registerAction、registerGetter
这三个方法是初始化的核心方法,是来处理我们自定义的三个队属性
1 | /* |
resetStoreVM
resetStoreVM方法其实很简单,主要是将state、getters挂载到vue实例上,并且将旧的vm卸载,使用新的vm
1 | function resetStoreVM (store, state, hot) { |
总结
经过上面整体的源码分析,可以看出Vuex
的内部逻辑并没有特别复杂,它会将我们自定义的state
、getters
、actions
、mutations
分别进行的处理,然后放入到Store
中,而每次要做出相应的变化,都要调用dispatch
、commit
方法。
下一篇会结合具体实例来进一步分析一下。