项目规范化之VUEX模块化

最近做了项目,把vuex所有的东西都一股脑地塞进index.js中,很臃肿,所以学习下模块化。

最近刚好在搞动态路由,用到很多vuex的东西下面是整个store文件夹下的文件:
在这里插入图片描述
将以前一股脑塞进index.js中的内容分模块各占一个。
此时index.js里的内容如下,将各个模块导入即可,但要注意此时modules.js是用来引入modules文件夹下的各个模块的

import Vue from 'vue'
import Vuex from 'vuex'

import state from './state'
import getters from './getters'
import modules from './modules'
import actions from './actions'
import mutations from './mutations'

Vue.use(Vuex)

export default new Vuex.Store({
    state,
    getters,
    mutations,
    actions,
    modules
})

modules.js文件如下:建立名字加permission这个子空间

import permission from './modules/permission'

export default {
    permission
}

此时permission文件里面的内容如下:namespace一定要开启这样就可以根据模块名找到对应内容。

export default {
    namespaced: true,/**注意这个地方是打开vuex模块的命名空间实行模块化管理*/
    state: {
        permissionList: null /** 所有路由 */,
        sidebarMenu: [] /** 导航菜单 */,
        currentMenu: '' /** 当前active导航菜单 */,
        control_list: [] /** 完整的权限列表 */,
        avatar: ''/** 头像 */,
        account: ''/** 用户角色 */
    }
    }

假设此时我们要访问permissionList这个字段,

//permission是命名空间
this.$store.state.permission.permissionList

最后为了更直观的展示模块化的作用console一下
console.log(store)看看一下此时的store里面的结构
可以看到此时state里面多了一个permission,即我们命名的模块化空间
在这里插入图片描述
点开permission:可以看到我们在permission里面定义的state都可以找到。
在这里插入图片描述

mutations的用法跟state稍有不同:截一个store图就明白了
下图LOGIN_IN是我在mutations.js中定义的,而permission/**都是我在permission这个模块中定义的。
在这里插入图片描述

假设我要用CLEAR_MENU方法:

this.$store.commit(“permission/CLEAR_MENU”)


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值