IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue3+vite+vuex实现全局数据模块化+持久化 -> 正文阅读

[JavaScript知识库]vue3+vite+vuex实现全局数据模块化+持久化

请添加图片描述

前言

最近将后台框架的vue版本从2.x升级为3.x版本,期间也遇到了很多坑,下面讲一下vue3.x实现实现全局数据模块化+持久化和vue2.x的区别
下文全部都是默认vue3.x + vite的环境,官方讲过的东西将不再赘述,想看2.x版本可以点击下面链接进入

vue2.x+vuex实现全局数据模块化+持久化

vuex模块的自动化引入及持久化实现

根据vuex官网所述,引入vuex,在项目根文件夹新建如下结构文件夹
vuex4.x版本官方文档
在这里插入图片描述
index.js中写入如下代码

// store/index.js
import { createStore } from "vuex"
import createPersistedState from "vuex-persistedstate"
// 创建一个新的 store 实例
const initModule = () => {
    // 获取modules文件夹内所有的模块
    const requireModules = import.meta.globEager("./modules/*.js")

    const modules = {}
    for (let i in requireModules) {
        // 将模块路径切割出模块名
        const moduleName = i
            .split("/")
            [i.split("/").length - 1].replace(".js", "")
        // 将模块放入modules
        modules[moduleName] = requireModules[i].default
    }
    return modules
}

const store = createStore({
    state() {
        
    },
    mutations: {
        
    },
    modules: { ...initModule() },
    plugins: [
        createPersistedState(),
    ],
})

export default store

状态持久化使用了vuex-persistedstate这个插件,它可以将vuex的数据同步到sessionStroage或localStroage中,避免了刷新页面时导致的数据丢失,例如用户信息这些就可以非常方便的使用。

每个模块中的代码如下(示例代码)

// store/module/router.js
export default {
    namespaced: true,
    state: {
        route: [],
 
    },
    mutations: {
        changeActive(state, active) {
            state.active = active
        },
    },
}

模块的使用

在模块化之后,你只需要根据你模块的名称来获取使用例如,调用方法的时候在方法前加上 模块名/

this.$store.state.router//获取用户模块数据
this.$store.commit('router/changeActive') //用于调用router模块内changeActive这个方法

这样我们就实现了vue3.x版本的全局数据模块化+持久化

注意点

自动引入模块时由于打包工具的不同,需要修改获取,模块的方式,下面放一下不同点

// webpack引入模块
const requireModules = require.context("./modules",true, /\.js$/)
// vite引入模块
const requireModules = import.meta.globEager("./modules/*.js")

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-27 11:46:11  更:2021-08-27 11:48:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:14:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码