vueX按模块写,需要手动引入模块,可以通过代码自动引入,方便快捷

代码:

// 自动匹配modules目录下的js文件作为store的modules,所以新增store模块的时候必须添加在modules目录下
const moduleFiles = require.context('./modules', true, /\.js$/);
const modules = moduleFiles.keys().reduce((modules, modulePath) => {const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')const value = moduleFiles(modulePath)modules[moduleName] = value.defaultreturn modules
}, {});const store = new vuex.Store({modules,
})

目录格式:

vueX自动存本地

npm install vuex-persistedstate --save

import Vue from 'vue'
import Vuex from 'vuex'
import persistedState from "vuex-persistedstate";
import getters from './getters.js'// 自动匹配modules目录下的js文件作为store的modules,所以新增store模块的时候必须添加在modules目录下
const moduleFiles = require.context('./modules', true, /\.js$/);
const modules = moduleFiles.keys().reduce((modules, modulePath) => {const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')const value = moduleFiles(modulePath)modules[moduleName] = value.defaultreturn modules
}, {});Vue.use(Vuex)export default new Vuex.Store({getters,modules,plugins: [persistedState({key: "thisVueX", // 浏览器中的名字paths: ["user"] // 需要存储起来的参数模块})]
})

特殊处理

// import CryptoJS from "crypto-js";
// const KEY1 = "cs2022606storage";
// const IVS1 = 'SpjSm53GXrBCK2XU'
// /**
//  *
//  * 其他数据加密
//  */
//  export function DecryptAESOther(data) {
//   let dataData=JSON.parse(data)
//   let dataObject={}
//   if(dataData && dataData!=''){
//     Object.keys(dataData).forEach(item=>{
//       dataObject[item]=DecryptAESOther1(dataData[item])
//     })
//     return dataObject;
//   }else{
//     return {}
//   }// }// function DecryptAESOther1(data){
//   if (!data || data.length <= 0) return data;
//   var key = CryptoJS.enc.Utf8.parse(KEY1);
//   var iv = CryptoJS.enc.Utf8.parse(IVS1);
//   var decrypted = CryptoJS.AES.decrypt(data, key, {
//     iv: iv,
//     mode: CryptoJS.mode.CBC
//   });
//   // padding: CryptoJS.pad.Pkcs7
//   let returnData=decrypted.toString(CryptoJS.enc.Utf8).toString()
//   try{
//      return JSON.parse(returnData);
//   }catch(e){
//      //TODO handle the exception
//  return returnData;
//   }
// }
// /**
//  *
//  * 其他数据解密
//  */
//  export function EncryptAESOther(datas) {
//   let data = JSON.stringify(datas);
//   if (!data || data.length <= 0) return data;
//   var key = CryptoJS.enc.Utf8.parse(KEY1);
//   var iv = CryptoJS.enc.Utf8.parse(IVS1);
//   var encrypted = CryptoJS.AES.encrypt(data, key, {
//     iv: iv,
//     mode: CryptoJS.mode.CBC,
//     padding: CryptoJS.pad.Pkcs7
//   });
//   let jsonStr = encrypted.toString();
//   return jsonStr;
// }//加解密方法
import {EncryptAESOther,DecryptAESOther} from '@/assets/utils/encrypt'// 自动匹配modules目录下的js文件作为store的modules,所以新增store模块的时候必须添加在modules目录下
const moduleFiles = require.context('./modules', true, /\.js$/);
const modules = moduleFiles.keys().reduce((modules, modulePath) => {const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')const value = moduleFiles(modulePath)modules[moduleName] = value.defaultreturn modules
}, {})// 方法一:
export default new Vuex.Store({getters,modules,plugins: [persistedState({key: "vueX", // 浏览器中的名字// paths: ["user","public"], // 需要存储起来的参数模块,不能与reducer同时存在storage:{getItem:key=>DecryptAESOther(localStorage.getItem(key)),setItem: (key, value) => localStorage.setItem(key, value),removeItem: key => localStorage.removeItem(key)},reducer(value){return {user:EncryptAESOther(value.user),public:EncryptAESOther(value.public),}},})]// 方法二:
export default new Vuex.Store({getters,modules,plugins: [persistedState({key: "vueX", // 浏览器中的名字// paths: ["user","public"], // 需要存储起来的参数模块,不能与reducer同时存在storage:{getItem:key=>DecryptAESOther1(localStorage.getItem(key)),setItem: (key, value) => localStorage.setItem(key, EncryptAESOther(value)),removeItem: key => localStorage.removeItem(key)}})]
})

createPersistedState([options])使用给定的选项创建插件的新实例。可以提供以下选项来配置您的特定需求的插件:

key :存储持久状态的键。(默认:vuex)

paths :部分持续状态的任何路径的数组。如果没有路径给出,完整的状态是持久的。(默认:[])

reducer :一个函数,将被调用来基于给定的路径持久化的状态。默认包含这些值。

subscriber :一个被调用来设置突变订阅的函数。默认为store => handler => store.subscribe(handler)

storage :而不是(或与)getState和setState。默认为localStorage。

getState :将被调用以重新水化先前持久状态的函数。默认使用storage。

setState :将被调用来保持给定状态的函数。默认使用storage。

filter :将被调用来过滤将setState最终触发存储的任何突变的函数。默认为() => true

vuex-persistedstate
vuex-persistedstate(github)

最后:
也可以通过vuex-persist插件实现,配置基本相同,具体点击查看文档

vueX 自动匹配modules,vueX插件vuex-persistedstate自动存储本地相关推荐

  1. 织梦TXT批量导入TAG标签并自动匹配相关文章插件

    织梦TXT批量导入TAG标签并自动匹配相关文章插件是一种非常有用的插件,它可以帮助网站管理员快速地将TAG标签添加到文章中,并自动匹配相关文章. 以下是该织梦TXT批量导入TAG标签插件的几个优点: ...

  2. html分页自动加载,AutoPagerize插件,网页自动翻页插件,自动加载分页网站

    AutoPagerize,是一款可以实现网页自动翻页的浏览器插件,该插件会自动缓存下一页网页,将翻页式的内容变为瀑布流的形式,无需手动点击翻页,即可自动链接到下一页. 用于自动加载分页网页的浏览器扩展 ...

  3. 探探自动配对PHP_探探自动匹配工具app下载-探探自动匹配工具(好友匹配)app安卓版v1.0-电玩之家...

    探探自动匹配工具是一款自动匹配添加好友的应用软件,探探自动匹配工具支持定时刷新好友功能,支持搜索匹配符合的用户,自动添加好友.对于有这个需要的用户来说是款不错的软件.探探自动匹配工具功能强大.操作简单 ...

  4. 模糊搜索下拉框(可输入+自动匹配)

    模糊搜索下拉框(可输入+自动匹配) 实现可输入+带自动匹配功能的下拉框,我试过以下几种方法: 1.直接使用h5的新标签,对应demo如下: <input list="browsers& ...

  5. EXCEL中数据的自动匹配主要包含的内容

    EXCEL中数据的自动匹配主要包含的内容: EXCEL中无法直接使用SELECT语句进行数据查询.定位.匹配,必须依赖其自身提供的函数.本文将介绍三种EXCEL中的数据自动匹配方法,使单元格内容能够自 ...

  6. ai不同形状的拼版插件_Illustrator(AI)自动拼版脚本插件

    Illustrator(AI)自动拼版脚本插件 书法字体2018.04.15ai脚本 分享一款小巧的Illustrator(AI)自动拼版脚本插件.此自动拼版脚本适用于相同形状的ai文档阵列方式拼版. ...

  7. 查漏补缺方为上策!!两万六字总结vue的基本使用和高级特性,周边插件vuex和vue-router任你挑选

    vue的基本使用和高级特性,周边插件vuex和vue-router 一.vue的使用 1.vue-cli 2.基本使用 (1)模板(插值,指令) (2)computed和watch (3)class和 ...

  8. vuex 源码分析_深入Vuex原理(上)

    原标题:深入Vuex原理(上) 孔维国,2016年加入去哪儿网技术团队.目前在大住宿事业部/增值业务研发中心,参与开发了TMC.CRM.QTA.Auth等项目,负责node框架nomi的设计以及开发. ...

  9. vuex的计算属性_vue中vuex的五个属性和基本用法

    VueX 是一个专门为 Vue.js 应用设计的状态管理构架,统一管理和维护各个vue组件的可变化状态(你可以理解成 vue 组件里的某些 data ). Vuex有五个核心概念: state, ge ...

最新文章

  1. bootstrap上传文件美化
  2. 图像处理和图像识别中常用的CxImage函数
  3. win10停止更新_新电脑到手第一件事,win10系统刷成win7,为何不直接预装win7?
  4. 第五章 MongoDb索引优化 5.4
  5. 服务的协作:服务间的消息传递——《微服务设计》读书笔记
  6. IOS UIScrollView 滚动视图的使用和文档
  7. 深入了解hibernate之PO,VO,load,get
  8. linux QT 结束当前进程_嵌入式linux编程开发必备知识
  9. 学习VIM之2014
  10. cv::cornerSubPix()亚像素角点检测
  11. mysql引擎互转问题
  12. 快闪ppt音乐_冬日午后南昌路,音乐快闪引人驻足
  13. 百度云盘海外版免费不限速,就是国内不能用!
  14. 没想到还可以用地图这么讲故事?Esri产品布道师为你精细了18个应用案例
  15. 雷电html查看程序编辑程序,NC程序编辑器(nEditor)
  16. 计算机软件被放进回收站,电脑不能把文件放入回收站只能永久删除怎么办?
  17. Unreal Engine 4学习资料整理
  18. 文章的DOI号是神马
  19. VUE-table表格操作列表适配屏幕缩小固定右侧fixed
  20. 您的计算机和打印机上的打印纸设置不匹配,打印纸张不符合打印要求、类型与设置不符-打印机上门维修复印机...

热门文章

  1. USB鼠标驱动简单设计
  2. C#中DataTable简介
  3. 各银行ATM(自动柜员机) 取款费用+信用卡收费标准+网上银行收费标准
  4. Ubuntu 16.04 安装samba服务
  5. 【Broadcast】registerReceiver流程
  6. H5场景动画 swiper Animate使用方法
  7. ZABBIX4.0 CPU utilization和load参数
  8. c语言个位十位百位除法运算,C语言怎样提取一个数的十位个位百位千位?
  9. 失望、难过、挫败 2020.11.26日记
  10. 【苹果家庭群发推送】软件安装网站下线时代更新了证书生成机制