import Vue from 'vue' import Vuex from 'vuex' import getters from './getters' import createPersistedState from 'vuex-persistedstate' Vue.use(Vuex) // https://webpack.js.org/guides/dependency-management/#requirecontext const modulesFiles = require.context('./modules', true, /\.js$/) // you do not need `import app from './modules/app'` // it will auto require all vuex module from modules file const modules = modulesFiles.keys().reduce((modules, modulePath) => { // set './app.js' => 'app' const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1') const value = modulesFiles(modulePath) modules[moduleName] = value.default return modules }, {}) const store = new Vuex.Store({ modules, getters, actions: { load(context) { return this.dispatch("loadUser").then(() => { const promises = []; return Promise.all(promises); }) }, unload(context) { context.commit("clear"); } }, plugins: [ createPersistedState({ key: 'vuex', // 存储数据中的哪些数据(如果是模块下具体的数据需要加上模块名称,如 user.token) paths: ['user.userId', 'user.username'] }) ] }) export default store