Vuex中modules的初始化过程分析

modules作用Store作为一个数据“仓库”,存储数据,若应用变得复杂要处理的数据过多,全部放到一个state下就很麻烦。modules就是将store拆分成众多具有完整结构的“子仓库“,每个module也可以添加子module,从而形成一个树状结构的对象。方便管理数据。最外层的module可以理解为根 rootModulemodules的初始化关键点this._module...
摘要由CSDN通过智能技术生成
modules作用
  • Store作为一个数据“仓库”,存储数据,若应用变得复杂要处理的数据过多,全部放到一个state下就很麻烦。
  • modules就是将store拆分成众多具有完整结构的“子仓库“,每个module也可以添加子module,从而形成一个树状结构。方便管理数据。
  • 最外层的module可以理解为根 rootModule
modules的初始化
关键点
  1. this._modules = new ModuleCollection(options) //Store中的_modules是modules集合
  2. module_collection中定义register()方法来构建modules结构
  3. installModule(this, state, [], this._modules.root)// 初始化rootModule、注册所有子module
  4. makeLocalContext() // 重写dispatch和commit方法,利用namespace拼接type重新得到新type值(类似于绝对路径)
  5. resetStoreVM() // 将state成为响应式对象

建立模块的结构

register (path, rawModule, runtime = true) {
   
    if (process.env.NODE_ENV !== 'production') {
   
      assertRawModule(path, rawModule)
    }
    const newModule = new Module(rawModule, runtime)  //新module实例  rawModule是配置项
    if (path.length === 0) {
      
      this.root = newModule   //拿到根 rootModule
    } else {
   
      const parent = this.get(path.slice(0, -1))
      parent.addChild(path[path.length - 1], newModule) //添加子module
    }
    // register nested modules
    if (rawModule.modules) {
   //如果当前module中配置了子module 则遍历并逐一注册
      forEachValue(rawModule.modules, (rawChildModule, key
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值