前端开发框架Vue中Vuex的使用原理分享

前端培训开发工作中,Vue.js的使用是主流技术,尤其是项目开发过程中只要使用到涉及Vue的状态管理就必然会用到Vuex。本篇博文就来分享一下关于Vuex的相关知识点,方便后期查阅使用。

1、首先来了解一下Vuex是什么?

官方文档是这样介绍的:

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。事例如下所示:

new Vue({

// state

data () {

return {

count: 0

}

},

// view

template: ` <div>{{ count }}</div> `,

// actions

methods: {

increment () {

this.count++

}

}

})

Vuex 作为Vue官方推出的状态管理框架,而且其具有便捷、简单API设计的开发工具支撑,在大中小Vue项目中得到很好的应用,很好的结合了Vue的响应式数据。

2、接着再来了解一下为什么要使用Vuex?

先来了解一个知识点:Vue是单向数据流的方式驱动的,流程图如下所示:

(该图来源于网络,如有侵权请联系作者删除)

  • state,驱动应用的数据源;

  • view,以声明方式将 state 映射到视图;

  • actions,响应在 view 上的用户输入导致的状态变化。

上述是一个单向数据流理念的简单示意流程,如果应用遇到多个组件共享状态的时候,单向数据流的简洁性就很容易遭到破坏。当多个视图依赖于同一个状态,或者来自不同视图的行为需要更改同一个状态,这时候就需要用到Vuex。Vuex是类似于Redux的状态管理器,用来管理Vue的所有组件状态,采用集中式存储管理应用的所有组件的状态,并且以相应的规则来保证状态以一种可预测的方式发生变化。还有在前端模块化项目中,用到某些变量需要在全局范围内引用的时候,也可以用到Vuex来解决。

3、Vuex的构成

(该图来源于网络,如有侵权请联系作者删除)

通过上图可以看到Vuex由以下几个部分组成:

(1)State

State单一状态树,是存储的单一状态,存储的是基本数据;

(2)Getters

Getter是从State中派生出来的,属于store的计算属性对State进行加工之后派生出来的数据,和computed的计算属性一样,getter的返回的值会根据它的依赖进行缓存处理,而且只有当它的依赖值发生变化改变的时候才会被重新计算;

(3)Mutations

Mutation是提交修改的数据,通过使用store.commit方法更改state的存储状态,mutation必须是同步函数;

(4)Actions

Action类似Mutation,但是Action提交的是Mutation,而不是直接改变状态,还可以包含任何异步操作;

(5)Modules

Module是由store分割成的模块,每个模块都拥有自己的state、getter、mutation、action,以及嵌套子模块(从上到下进行同样方式的分割)

4、Vuex其他

(1)Vuex 动态注册模块:

Vuex 通常使用静态模块,这些模块在打包的时候都会打到 app.js 中,但是若有的模块过大而且不是必须立马用到的,就可以动态的注册模块到 vuex 中。

在使用Vuex 某个模块的时候再进行注册:

mounted () {

this.$store.registerModule('myModule', MyModule)

}

在不使用的时候,注销该模块:

beforeDestroy () {

this.$store.unregisterModule('myModule')

}

这样实现的效果是该页面在加载时才下载模块内容,而不是刚访问网站就去下载该模块内容。

(2)Vuex的项目结构

Vuex不限制代码结构,但是规定了一些需要遵守的规则:应用层级的状态需要集中到单个store对象中;提交mutation是更改状态的唯一方法,且该过程是同步的;异步逻辑都应该封装到action里面。

最后,Vuex的状态存储是响应式的,当Vue组件从store中读取状态时,若store中的状态发生变化,那么相应的组件也会得到高效更新。Vuex是通过全局注入store对象来实现组件之间的状态共享,如果在中大型项目中时,想要实现某个组件改变某个数据,多个组件自动获取更改后的数据来进行业务逻辑处理,这时候就要适用Vuex;如果在项目中只是多个组件间传递数据,没有其他复杂操作,适用组件间常用通信方式即可,没必要使用Vuex。

(0)

相关推荐

  • 【Vue】状态管理

    页面应用需要Vuex管理全局/模块的状态,大型单页面组件如果靠事件(events)/属性(props)通讯传值会把各个组件耦合在一起.因 此需要Vuex统一管理,当然如是小型单页面应用,引用Vuex反 ...

  • vue中 Vuex

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

  • Vue3.x 从零开始(五)—— Router + Vuex + TypeScript 实战演练(上)

    前面的几篇文章已经大致介绍了 Vue 3 的常用 API,现在综合起来做一个实战演练 配合完整代码食用更香哦,项目地址:https://github.com/wisewrong/test-vue3-d ...

  • Vuex源码阅读(二) store内的getters实现逻辑

    Vuex源码阅读(二) store内的getters实现逻辑

  • 《.netCore + Vue框架搭建之旅》前端篇:微前端架构设计(2)

    心之所向,勇往直前! 记录开发过程中的那些小事,给自己加点经验值. 前言 上篇<.netCore + Vue框架搭建之旅>前端篇:微前端架构设计>讲了一下设计的核心思想,这篇主要说一 ...

  • 7个实用的 Vue.js 工具和库

    前端技术优选 昨天 以下文章来源于前端迷社区 ,作者小迷妹 大家好,我是为前端娱乐圈操碎了心的小迷妹,正宗前端开发一枚,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效 ...

  • 前端开发框架Vue在PostCSS中的使用

    为什么要使用Postcss 众所周知转换 px 单位的插件有很多,知名的有 postcss-px-to-viewport 和 postcss-pxtorem,前者是将 px 转成 vw,后者是将 px ...

  • 前端开发框架Vue.js巧妙运用修饰符讲解分析

    在本文我就不详细介绍Vue.js是如何给组件绑定事件了的,大家都知道是通过v-on:事件="事件名" 或者它的语法糖 @事件="事件名"前端培训. Vue.js ...

  • 前端开发框架jQuery的优势与基础知识分享

    jQuery,顾名思义是JavaScript和查询(Query),jQuery是免费.开源的.它可以简化查询DOM对象.处理事件.制作动画.处理Ajax交互过程且兼容多浏览器的javascript库, ...

  • 前端开发框架之Vue开发流程与使用

    一.Vue框架的开发流程介绍 当我们从github上下载一个前端模板框架到本地后,框架中经常会自带有一些跳转显示类的功能,我们可以通过查看这些功能是如何实现的,进而一步步改造为我们需要的样子.在这一开 ...

  • 前端开发框架之Vue

    前端开发框架之Vue

  • 家装电路中强电的原理以及施工要点

    一.强电的基本知识 强电,也就是我们所说的电线. 灯线要求1.5平方及以上 : 普通插座要求2.5平方及以上: 家用空调插座要求4平方及以上 : 中央空调要求6平方及以上. 电线又分为单芯线和多芯线两 ...

  • LAC的书屋 | 生态规划必读:《景观设计和土地利用规划中的景观生态学原理》

    推荐语:这是一本很简短的手册性质图书.本书将场地规划和生态学理论结合,通过引入斑块(Patches).廊道(Corridor).边界(Edge).矩阵(Matrix)等生态学的空间理论,从社会功能.动 ...

  • setTimeout在vue中的正确使用

    笔者最近因为公司需求开发使用vue和jquery开发抓娃娃H5极简小游戏,使用到setTimeout函数.遇到了1个坑: 在vue的某个方法(点击后执行) setTimeout(this.end(), ...