一、为了应对大型应用单个store臃肿的情况,vuex提供了将store分割为单个module的功能,每个模块拥有自己的state、mutation、getter、action。
(1)创建一个store文件夹,index.js文件,一个modules文件夹。写好每个独立的module,然后在index.js引入,创建vuex实例是,将所有module对象放入,modules属性中。
const store = new Vuex.Store({
modules: {
a: moduleA,
b: moduleB
},
getters:{
a: getterA,
b: getterB
}
})
(2)index.js中<br />引入vue、vuex,创建store实例前,先调用vue.use方法,安装插件,才能使用vuex。<br />module多的情况需要一个一个地引入,此时可以用webpack的require.context来自动引入。
import Vue from 'vue'
import Vuex from 'vuex'
//使用vuex前,先调用vue.use安装插件
Vue.use(Vuex)
//再使用require.contex自动引入所有modules
const fileModules = require.context('./modules', true, /\.js$/)
//返回的方法有三个属性,keys方法,resolve方法,id属性
fileModules.keys().reduce((modules, currentModulePath)=>{
// 通过向fileModules传入对应路径,可以得到js变量。
//累计操作modules,并返回
},{})
const store = new Vuex.store({
modules
})
export default store
在main.js中引入导出的store实例,在创建vue实例时,作为参数传入配置项。ok
二、路由配置
路由单独放在一个文件夹中,路由可以分割为多个module,每个module导出单个路由对象。引入index.js
index.js中存放一些基础路由对象,比如login路由,其他的权限路由要等请求后台用户权限信息后,再计算出该用户的路由,然后动态加入路由对象中。