
前面的文章分析了
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方法。
下一篇会结合具体实例来进一步分析一下。