vue-cli配置使用Vuex的全过程记录

 更新时间:2021年07月06日 12:16:46   作者:MarJet  
这篇文章主要给大家介绍了关于vue-cli配置使用Vuex的相关资料,Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,本介绍的非常详细,需要的朋友可以参考下

前言

    在vue开发用我们常常会用到一些全局的数据,比如用户信息、用户权限、一些状态等等。我们传统的数据都是单向的,所以我们得一层一层的传递,这样我们遇到一个多组件共享一个数据的时候,单向的这个数据就很难以维护,比如一个组件嵌套很多层但是,数据改变方法就得一层一层的传递。这时候我们就可以引入了vuex。

    vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

如下图就是vuex官网中管理组件间一个共享状态的流程图

安装使用

我们之间在我们初始化的vue-cli的项目中之间使用npm或者yarn进行一个安装就可以了.

npm install vuex --save // yarn add vuex

然后我们进行管理我们的状态,在根目录下src文件中新建一个store文件夹然后在store下建立index.js作为入口文件,然后写入我们的一个全局状态。

这里的state作为全局的状态,getters是可以作为我们派生出来的一些状态,例如需要对state中count进行相除操作,然后mutations就是改变state的状态的方法第一个参数是我们的state的Object然后第二个参数是可以我传入的值。最后这里的actions是提交mutation的而不是直接变更状态这里的action是可以是异步函数。action中的函数第一个参数接收一个与store实例先沟通呢的方法和属性的context函数, 第二个可是我们传入的。

在页面中使用state以及通过getter派生出来的state和通过action派发更改state数据

这里我通过vuex中mapState、mapGetters、mapMutations、mapActions的方式引入想对应state、getter派生数据,mutation、action,然后我就直接可以再vue实例上使用了。当然也可以直接引入我们定义的store通过store实例上的获取我们想要的state、action、mutation。
效果如下所示

个人感觉使用vuex结合map开头引入的方式比较优雅点,所以我也就使用了这种方式,更多的引用定义方法可以参考vuex官网所给出的示例,我这就是使用了单单我平时使用的一种形式。

vuex官方文档: vuex.vuejs.org/zh/guide/ac

模块化管理

当我们的state变的多了,store对象可能就会变得非常的臃肿,所以我就需要使用模块化管理的方式进行对我们的state文件分文件处理,这样更有利于我们的维护。

修改我们的store文件下的目录结构新建一个modules目录以及在此目录下新建一个main.js。

修改后的目录如图所,getters.js是我们派生的一些状态。

然后修改我们的index.js文件代码如下

import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'

Vue.use(Vuex)

const context = require.context('./modules', false, /\.js$/)
const moduleStores = {}

context.keys().forEach(key => {
    // 获取读取到的文件名字并且截取
    const fileName = key.slice(2, -3);

    //通过 context(key)导出文件内容
    const fileModule = context(key).default

    moduleStores[fileName] = {
        ...fileModule
    }
})

const store = new Vuex.Store({
  modules: {
    ...moduleStores,
  },
  getters
})

export default store

这里我们使用webpack的api自动化导入我们建立的module

然后在我们在的组件的页面使用跟之前的基本都是一模一样的就是通过使用mapState进行修改一些获取state的值因为我们是通过模块导入的现在要获取store中main下的count所以修改后的mapState引入使用如下

现在这样我们已经使用了模块化的管理方式,比如想新建立一个state库我们就只需在modules下建立就可以了,文件的格式都是如main.js形式导出。

vuex状态持久化

当我们使用vuex做为状态管理的时候,我们刷新浏览器然后vuex数据就没有了,这时候我们就需要一个数据持久化的操作,比如讲我们的数据保存在localstroage中, 这是可以实现的。但是如果我们store模块多的时候,可能这样就比较麻烦,所以引入了vuex-persistedstate这个第三方的插件库。

使用方法只需要在我们的store目录下的index.js中引入并且在new Stroe的时候进行一个使用就可以了 如下

这里在plugins中使用我们引入的createPersistedState方法就可以了,直接引入的方式是我们所有状态都是进行一个持久化的操作,当然我们也可以修改配置,放我们想进行持久化的一个状态进行持久化操作,具体的配置我这里没有写了具体可以参照vuex-persistedstate官方的配置。

vuex-persistedstate的Github地址: github.com/robinvdvleu

总结

在此我只简单的介绍使用了vuex使用,更具体的使用官网可以参考官网。vuex确实是方便我们管理一些全局状态了,比如用户信息,动态加载路由时候存储的路由。当是小项目使用的时候可能增加我们的复杂度,所以在考虑项目前期的时候尽量的规划好我们的项目目录结构以及数据结构形式,这对我们快速开发和维护一个项目是很重要的。

到此这篇关于vue-cli配置使用Vuex的文章就介绍到这了,更多相关vue-cli配置使用Vuex内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Vue打包上线之后部分CSS不生效的问题

    解决Vue打包上线之后部分CSS不生效的问题

    今天小编就为大家分享一篇解决Vue打包上线之后部分CSS不生效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue获取当前路由的五种方式示例代码

    vue获取当前路由的五种方式示例代码

    这篇文章主要给大家介绍了关于vue获取当前路由的五种方式,文中通过代码示例介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友可以参考下
    2023-08-08
  • vue实现动态路由的方法及路由原理解析

    vue实现动态路由的方法及路由原理解析

    这篇文章主要介绍了路由原理及vue实现动态路由,Vue Router 提供了丰富的 API,可以轻松地实现路由功能,并支持路由参数、查询参数、命名路由、嵌套路由等功能,可以满足不同应用程序的需求,需要的朋友可以参考下
    2023-06-06
  • Vue3 Ref获取真实DOM学习实战

    Vue3 Ref获取真实DOM学习实战

    这篇文章主要为大家介绍了Vue3 Ref获取真实DOM学习实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Vue3数字滚动插件vue-countup-v3的使用

    Vue3数字滚动插件vue-countup-v3的使用

    vue-countup-v3 插件是一个基于 Vue3 的数字动画插件,用于在网站或应用程序中创建带有数字动画效果的计数器,本文主要介绍了Vue3数字滚动插件vue-countup-v3的使用,感兴趣的可以了解一下
    2023-10-10
  • vue封装图片滑块验证组件的方法

    vue封装图片滑块验证组件的方法

    这篇文章主要为大家详细介绍了vue封装图片滑块验证组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 在Vue中实现父组件控制子组件的值的两种方法

    在Vue中实现父组件控制子组件的值的两种方法

    在Vue开发中,父组件和子组件之间的数据传递是一项常见的任务,本文将介绍如何在Vue中实现父组件控制子组件的值,以便灵活地管理和更新子组件的数据,文中有详细的代码讲解,需要的朋友可以参考下
    2023-11-11
  • 如何使用Vue做个简单的比较两个数字大小页面

    如何使用Vue做个简单的比较两个数字大小页面

    这篇文章主要给大家介绍了关于如何使用Vue做个简单的比较两个数字大小页面的相关资料,实现一个比较两个数字大小的页面,练习Vue实例的创建、数据绑定和事件监听方法,需要的朋友可以参考下
    2023-10-10
  • Vue electron零基础使用教程

    Vue electron零基础使用教程

    Electron也可以快速地将你的网站打包成一个原生应用发布,下面这篇文章主要给大家介绍了关于Vue和React中快速使用Electron的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • Vue数据驱动模拟实现5

    Vue数据驱动模拟实现5

    这篇文章主要介绍了Vue数据驱动模拟实现的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论