vue现在越来越火,不单单可以写简单的小项目,也可以写大中型的项目。但是项目大了,项目之间的数据传递就会变得复杂,那么问题来了?在一个大型项目中,多个组件要公用同一个或多个数据,我们如何保证每个组件获取到的数据都是预期对的值呢?这就要用到vuex了。

  学习一样新的东西,我的学习思路一般有三步:

    1、它是什么?

    2、它是做什么的?

    3、它有什么用处?

  下面,我们就按照以上三点,来学习一下vuex。

  一、vuex是什么

    vuex是一个专门为vue.js设计的集中式状态管理架构。如果不明白这句话,我们做一个比喻,首先我们设置一个情景:有一个村子,村子里有5户普通人家和一户村长家,村长负责管理村子里所有的粮食,每次有人家要吃饭,这家人都要先告诉村长,我们这次需要吃多少斤,然后村长称出等量的粮食交给要吃饭的这家人。这样,村长随时都知道村里粮食有多少,但是,如果突然又搬来了几十户人家,每家每次吃饭都要这样村长会很麻烦,所以呢,村长就想出一个办法,在村子里建一个仓库,把村子里所有的粮食都放进仓库里,有哪家人要吃饭了,就自己到仓库里去取,这样,村长就不用那么累了。在这个例子里,一个村子就是一个vue项目,村长就是项目的一个父组件,5户普通人家就是5个子组件,他们吃的粮食就是组件之间共同的一个数据,那么那个存放粮食的仓库就是我们所说的vuex架构。所谓的状态自然就是公用数据的状态了。简言之就是把多个组件公用的数据放到一个公用的仓库去管理,这样说不知道会不会好理解一些。

  二、vuex是做什么的

    就像上面的例子所描述的,vuex就是一个专门管理vue项目数据的一个架构,它的工作就是定义并初始化所有公用数据、定义对数据的同步和异步操作。如果有组件要使用这里的数据,直接调用定义好的操作方法即可。

  三、vuex有什么用

    之前我们说如果项目较大,数据传递复杂的情况下,我们可以使用vuex来同意管理数据状态。它的作用就是将项目的公用数据及对数据的操作封装到一个单独的管理器中,这个管理器只定义对数据有关的操作,不包含其他任何与dom或与数据无关的代码。所以从数据管理的角度来说,vuex使得数据管理更加方便明了,从使用数据的组件角度来说,也更方便快捷,如果想使用数据了,那么我直接引入并调用vuex给定的操作方法,使程序代码可读性更强。

  好,大体了解了vuex之后,我们就要看看怎么使用vuex吧!

  第一步:安装

     npm install vuex --save

  第二步:定义路径,填写内容

    

    以上目录是我在一个项目中用到的,

      state用于记录state数据的状态

      mutations用于定义数据的同步操作

      mutation-types用于映射mutation的操作, 存储mtation操作的相关常量(名)

      gettesr用于获取state中数据的状态

      actions用于定义对mutation的封装或对数据的异步操作

      index.js是vuex的入口文件,其他操作文件都要在这里引入,并赋值给store实例

      

    注意:这里在引入vuex后一定要加入这句话:Vue.use('vuex')

      

  第三步:在main.js中引入:import store from './store'

      然后挂在到vue实例上:

    

  最后:使用

    在组件中用vuex提供的语法糖mapActions,mapGetters,mapMutations等引入store方法并调用

  vuex的使用到此就结束了,另外需要注意两点:(一)vuex适用于中大型vue项目,小的项目,数据操作简单的就没必要使用vuex了

                       (二)一个应用只能有一个store实例,这个store实例要统一管理应用所有公用的数据

好了,今天就写这么多,以上都是我在写项目的时候自己的总结,如果有什么不足之处还请各位大神指正,另外别忘记关注我哦,后续还有更多知识分享,谢谢

vuex的使用的更多相关文章

  1. 关于Vue.js 2.0 的 Vuex 2.0,你需要更新的知识库

    应用结构 实际上,Vuex 在怎么组织你的代码结构上面没有任何限制,相反,它强制规定了一系列高级的原则: 应用级的状态集中放在 store 中. 改变状态的唯一方式是提交mutations,这是个同步 ...

  2. vuex复习方案

    这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.

  3. vuex 初体验

    vuex是vue的状态管理工具,vue进阶从es6和npm开始,es6推荐阮一峰大神的教程. vuex学习从官方文档和一个记忆小游戏开始.本着兴趣为先的原则,我先去试玩了一把-->. Vuex ...

  4. vuex(1.0版本写法)

    Vuex 是一个专门为 Vue.js 应用所设计的集中式状态管理架构. 官方文档:http://vuex.vuejs.org/zh-cn/  2.0和1.0都能在此找到 每一个 Vuex 应用的核心就 ...

  5. 关于Vue vuex vux 文档

    01. vue 链接 http://vuejs.org.cn/guide/ 02. vuex  ----->>状态管理模块儿<<------- https://vuex.vue ...

  6. vuex

    英文:(Introduction)中文:https://github.com/vuejs/vuex/issues/176(贡献者努力中)

  7. Vue 2.0 + Vue Router + Vuex

    用 Vue.js 2.x 与相配套的 Vue Router.Vuex 搭建了一个最基本的后台管理系统的骨架. 当然先要安装 node.js(包括了 npm).vue-cli 项目结构如图所示: ass ...

  8. Vue2.X的状态管理vuex记录

    记住上述的顺序情况:想要改变state,只能通过Mutation,虽然action可以直接改变state,这样会使每个状态可以方便的跟踪和记录(用Devtools跟踪) vue Method   -- ...

  9. 在vue1.0遇到vuex和v-model的坑

    事情是这样的,在开发项目的过程中我使用了vuex并且在store中定义了一个保存用户信息的对象 userInfo : { 'nickName' : '', // 昵称 'password' :'', ...

  10. vuex 笔记

    Vuex 笔记 一个简单的状态管理 单一数据源: const sourceOfTruth = {} const vmA = new Vue({ data: sourceOfTruth }) const ...

随机推荐

  1. Codebase Refactoring (with help from Go)

    Codebase Refactoring (with help from Go) 代码库重构(借助于Go) 1.摘要 Go应该添加为类型创建替代等效名称的能力,以便在代码库重构期间渐进代码修复.本文解 ...

  2. Head First设计模式之桥接模式

    一.定义 桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使的抽象和实现都可以独立地变化. 主要解决:在多维可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活. 何时使 ...

  3. [总结]-2018 w1

    不想总结 2017,过去的就过去吧,不过自己在 2017 年还是收获了很多,最重要的就是赚钱.赚钱还是需要两把刷子,所以,2018 的小目标就是学习数据分析和机器学习.希望自己在这两个领域能搞点事情. ...

  4. Java基础day01

    linux:1免费 开源的操作系统,Java主要是服务器端的开发 2与window,目录结构.安全性比后者高 3常用命令 pwd.ls.cd:vi(打开一个记事本若没有就新建一个记事本) 绝对路径:都 ...

  5. 通过!important设置css样式优先级

    CSS写在不同的地方有不同的优先级,一般 .css文件中的定义 < 元素style中的属性,但是如果使用!important,则会变得不一样,使用!important的css定义是拥有最高的优先 ...

  6. jBPM学习之部署流程定义

    也许部署流程定义的方法有很多,这里选用的是用Java代码调用工作流引擎提供的部署服务API.在这之前,假设你的Eclipse已经安装好了GPD工作流画图工具,并且学会了画出最简单的HelloWorld ...

  7. commons - lang(1) StringUtils

    分享几个关于StrngUtils的几个实用的方法(以下方法中省略了参数) 1.isBlank() 这个方法用来判空,包括null和空字符串,之前自己写的时候都是str != null &&am ...

  8. 【转载】在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间

    在windows下,一个文件有:创建时间.修改时间.访问时间.而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是 ...

  9. MongoDb 快速入门教程

    文章首发于[博客园-陈树义],点击跳转到原文MongoDb 快速入门教程. MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的 ...

  10. flask配置管理

    配置管理 复杂的项目需要配置各种配置环境,如果设置项缺少可以直接硬编码进来,比如下面的方式: app.config['DEBUG']=True app.config['SECRET_KEY'] = ' ...