Vuex原理
1.Vuex初始化
import Vuex的时候,引用的是一个对象,定义在index.js中,他同样存在一个install方法,install中通过混入一个beforeCreate钩子函数,将options.store保存在所有组件的$store中,这个options.store就是实例化的Store对象。所以我们可以通过this.$store访问到这个实例。
1.1 Store实例化
1 | const moduleA = { |
store可以看作多个module子模块的整体(root module),module为一个类,module之间通过key建立父子关系,为树形结构,创建完module之后,需要对module进行安装。
1 | const state = this._modules.root.state |
在初始化时,为了响应module中的变化,会创建一个上下文环境,同样是通过Object.defineProperties去劫持Store中的属性,建立state和getters的联系,从而可以通知vm进行更新。