index.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. }
  52. }
  53. })
  54. ]
  55. })
  56. export default store