index.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. import createPersistedState from 'vuex-persistedstate'
  4. Vue.use(Vuex)
  5. // 自动导入 modules 目录下的所有模块
  6. const modulesFiles = require.context('./modules', true, /\.js$/)
  7. const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  8. const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
  9. const value = modulesFiles(modulePath)
  10. modules[moduleName] = value.default
  11. return modules
  12. }, {})
  13. // 根据环境选择存储方式
  14. let storage = null;
  15. // #ifdef H5
  16. storage = window.localStorage;
  17. // #endif
  18. // #ifndef H5
  19. storage = {
  20. getItem: (key) => uni.getStorageSync(key),
  21. setItem: (key, value) => uni.setStorageSync(key, value),
  22. removeItem: (key) => uni.removeStorageSync(key)
  23. };
  24. // #endif
  25. const store = new Vuex.Store({
  26. modules,
  27. // 全局状态
  28. state: {
  29. // 可以在这里添加全局状态
  30. },
  31. // 全局 mutations
  32. mutations: {
  33. // 可以在这里添加全局 mutations
  34. },
  35. // 全局 actions
  36. actions: {
  37. // 可以在这里添加全局 actions
  38. },
  39. // 全局 getters
  40. getters: {
  41. // 可以在这里添加全局 getters
  42. },
  43. plugins: [
  44. createPersistedState({
  45. key: 'vuex', // 存储的key
  46. storage: storage, // 存储方式
  47. reducer(val) {
  48. return {
  49. // 只持久化指定的模块
  50. switchingModule: val.switchingModule,
  51. rightsManagement: val.rightsManagement,
  52. starSpiritImage: val.starSpiritImage
  53. }
  54. }
  55. })
  56. ]
  57. })
  58. export default store