写在前面:

这篇文章是在vue-cli里面使用vuex的一个极简demo,附带一些vuex的简单介绍。有需要的朋友可以做一下参考,喜欢的可以点波赞,或者关注一下,希望可以帮到大家。

本文首发于我的个人blog:obkoro1.com

引入步骤

我创建了一个新的vue-cli里面什么东西都没有,只引用了vuex,这里是码云地址,可以下载下来,然后npm installnpm run dev试试看,里面vuex的使用地方也全都注释了一遍。

安装

    npm install vuex --save

在src目录下创建文件夹vuex


该文件夹包含以上文件,创建好了之后,我们一个一个文件来说里面都有什么东西。

vuex/index.js

import Vue from 'vue';
import Vuex from 'vuex';
import status from './modules/status/index';//引进模块
Vue.use(Vuex); export default new Vuex.Store({
modules: {
//Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action
dataStatus:status,//访问这里面数据的时候要使用'dataStatus'
},
});

这是vuex的主文件store,这个例子是把state、mutation、action分割成模块,然后再将每个模块引用进这个index.js文件里面,等我们整个文件夹的文件都搭好之后,还要把文件引入到main.js里面、

vuex/modules/status/index.js

import actions from './actions';
import mutations from './mutations';
//引入action和mutations export default {
state:{ //这里面是要读取或者写入数据的地方
msg:'默认状态',
},
//state actions mutations顺序不能乱
actions: actions,
mutations: mutations,
}

这是一个模块里面的主文件,模块内部拥有自己的state、actions、mutions,是从上到下进行分割的。

vuex/modules/status/mutation_type.js

//这个js文件里面只是一些变量,把action和mutation文件里面相同变量名的链接起来
export const VUEX_TEST = 'VUEX_TEST';
// 一般使用的是大写来命名变量,因为尤大也是这么做 2333

vuex/modules/status/actions.js

import * as types from './mutation_type'; //引入变量
export default {
actionFn({commit},data){ //actionFn是在组件通过dispatch触发的函数名 可以理解成组件和actions的连接
commit(types.VUEX_TEST,data);
//types.VUEX_TEST 是要commit到mutation的哪个位置 变量的作用
//data 是传过来的参数
}
};

vuex/modules/status/mutations.js

import * as types from './mutation_type';//引入变量

export default {
//types.VUEX_TEST 代表接受哪个actions的commit 也就是上面引入变量的作用
[types.VUEX_TEST](state,data){
//第一个参数state是这个模块的state 第二个参数是传进来的数据
if(data.status==1){ //根据传进来的参数做各种操作
//这里就是操作state了,赋值之后,各个组件上面引用该数据的地方会自动更新
state.msg=data.text;
}else if(data.status==2){
state.msg='奕迅';
}
//这里是随便写的一个栗子
console.log(state.mg,data,'mutation');
}
};

这两个文件里面有注释,解释的蛮清楚的。当把所有文件创建好了之后,再回过头来看看每个文件之间都有联系,多想想或许就懂点什么东西了 emmm

vuex文件夹,文件目录以及下载

引入main.js


上面的vuex文件夹只是搭建一个store,但是这样还不够,我们还要在项目里面使用这个。引用到main.js,如图所示。

组件中如何使用。


使用的话就是像上面那么使用,本文只是一个简单的示例,还有更多骚操作,等大家上手之后再慢慢摸索咯。

git地址

感觉写的蛮乱的,大家如果看不太懂的话,可以到码云去下载文件,然后自己跑一跑,多看看,试一试就应该没问题了。

vuex简介

通常我是希望大家先学会用,然后再了解后面的机制,每次我看博文的时候,一大段原理贴上来,都给我弄懵逼了。。

vuex主要是用来复杂项目之间的组件通信功能,简单的项目不要用这套复杂的事件以及状态管理机制。项目如果不够复杂的话推荐我之前写的:在vue项目中 如何定义全局变量 全局函数,使用全局变量的形式的也可以实现需求。

vuex实现的作用:数据共享机制

通过统一的数据中心store维护状态数据,每个组件进行更新的时候,通知数据中心store。再由stroe将共享的状态,触发每一个调用它的组件的更新。


vuex的工作流程

大家先仔细看看下面这张图,理解他的工作机制。


  1. 在vue组件里面,通过dispatch来触发actions提交修改数据的操作。
  2. 然后再通过actions的commit来触发mutations来修改数据。
  3. mutations接收到commit的请求,就会自动通过Mutate来修改state(数据中心里面的数据状态)里面的数据。
  4. 最后由store触发每一个调用它的组件的更新

注意:这套模型是单向流动的

后话

以上就是本文的所有内容了,希望可以帮到大家。

最后:如需转载,请放上原文链接并署名。码字不易,感谢支持!本人写文章本着交流记录的心态,写的不好之处,不撕逼,但是欢迎指点。然后就是希望看完的朋友点个喜欢,也可以关注一下我。
个人blog and 掘金个人主页

以上2017.12.9

手摸手教你在vue-cli里面使用vuex,以及vuex简介的更多相关文章

  1. 【转】手摸手,带你用vue撸后台 系列四(vueAdmin 一个极简的后台基础模板)

    前言 做这个 vueAdmin-template 的主要原因是: vue-element-admin 这个项目的初衷是一个vue的管理后台集成方案,把平时用到的一些组件或者经验分享给大家,同时它也在不 ...

  2. 【转】手摸手,带你用vue撸后台 系列一

    前言 说好的教程终于来了,第一篇文章主要来说一说在开始写业务代码前的一些准备工作吧,但这里不会教你webpack的基础配置,热更新怎么做,webpack速度优化等等,有需求的请自行google. 目录 ...

  3. 【转】手摸手,带你用vue撸后台 系列二(登录权限篇)

    前言 拖更有点严重,过了半个月才写了第二篇教程.无奈自己是一个业务猿,每天被我司的产品虐的死去活来,之前又病了一下休息了几天,大家见谅. 进入正题,做后台项目区别于做其它的项目,权限验证与安全性是非常 ...

  4. iOS动画进阶 - 手摸手教你写 Slack 的 Loading 动画

    如果移动端访问不佳,可以访问我的个人博客 前几天看了一篇关于动画的博客叫手摸手教你写 Slack 的 Loading 动画,看着挺炫,但是是安卓版的,寻思的着仿造着写一篇iOS版的,下面是我写这个动画 ...

  5. 【转】手摸手,带你用vue撸后台 系列三(实战篇)

    前言 在前面两篇文章中已经把基础工作环境构建完成,也已经把后台核心的登录和权限完成了,现在手摸手,一起进入实操. Element 去年十月份开始用vue做管理后台的时候毫不犹豫的就选择了Elemen, ...

  6. 手摸手教你如何在 Python 编码中做到小细节大优化

    手摸手教你如何在 Python 编码中做到小细节大优化 在列表里计数 """ 在列表里计数,使用 Python 原生函数计数要快很多,所以尽量使用原生函数来计算. &qu ...

  7. 手摸手带你理解Vue的Computed原理

    前言 computed 在 Vue 中是很常用的属性配置,它能够随着依赖属性的变化而变化,为我们带来很大便利.那么本文就来带大家全面理解 computed 的内部原理以及工作流程. 在这之前,希望你能 ...

  8. 手摸手带你理解Vue的Watch原理

    前言 watch 是由用户定义的数据监听,当监听的属性发生改变就会触发回调,这项配置在业务中是很常用.在面试时,也是必问知识点,一般会用作和 computed 进行比较. 那么本文就来带大家从源码理解 ...

  9. 手摸手教你微信小程序开发之自定义组件

    前言 相信大家在开发小程序时会遇到某个功能多次使用的情况,比如弹出框.这个时候大家首先想到的是组件化开发,就是把弹出框封装成一个组件,然后哪里使用哪里就调用,对,看来大家都是有思路的人,但是要怎样实现 ...

  10. 手摸手教你让Laravel开发Api更得心应手

    https://www.guaosi.com/2019/02/26/laravel-api-initialization-preparation/ 1. 起因 随着前后端完全分离,PHP也基本告别了v ...

随机推荐

  1. How Cocoa Beans Grow And Are Harvested Into Chocolate

    What is Cocoa Beans Do you like chocolate? Most people do. The smooth, brown candy is deliciously sw ...

  2. 绿洲作业第一周 - 美术Art work

    Dear parents, Please remind your child to learn and finish the work as follows from the art teacher: ...

  3. 多因素线性回归|adjusted R^2|膨胀系数|非线性回归|Second-order model with 1 independent variable|Interaction model with 2 independent variables|偏相关|fraction[a]|contribution

    多因素线性回归 系数由最小二乘法得到 R^2;adjusted R^2:变量变多之后,r^2自然变大,但是这不是反应客观事实,所以引入了adjusted R^2 使用散点图看独立性,也可以使用软件,c ...

  4. 应用HTML5 标签下载文件

    使用HTML5 <a>标签可以直接下载文件而不用通过后台action. <a href="/uploadfolder/xxxx.txt">点击下载</ ...

  5. 未来科技城 x 奇点云打造「企业数据大脑」,助力1.3万家企业服务

    “当前,政府数字化和数字政府建设已成为一种趋势.一种必然,并且有了一条水到渠成式的实现路径.” 上升为国家战略的数字中国建设加速了”智慧政务“的生动实践,杭州未来科技城的「企业数据大脑」就是一个典型. ...

  6. Vue+elementUI build打包部署后字体图标丢失问题

    错误描述:Vue+elementUI  build打包部署后字体图标丢失,控制台显示文件element-icons.woff和element-icons.ttf文件404 错误展现: 控制台报错截图 ...

  7. 用磁盘工具刻录MACOSX系统启动盘方法

    些系统盘用Toast 刻录后无法引导,建议使用磁盘工具刻录系统盘 老手可能早知道这了,仅供新手参考 在应用程序-->实用工具里找到磁盘工具,打开. 将DMG文件拖放到磁盘工具窗口,双击DMG文件 ...

  8. linux有些sh文件,为什么要用 ./ 来执行

    因为有环境变量PATH,里面包含了许多目录,这些目录下的可执行文件就无需输入完整路径来执行.你可以用 echo "$PATH"查看当前的环境变量包含的目录,自带的命令文件都是在PA ...

  9. Jacoco代码覆盖率工具

    https://www.cnblogs.com/fnng/p/7923314.html https://my.oschina.net/wangmengjun/blog/974067

  10. keepalive笔记之三:keepalived通知脚本进阶示例

    下面的脚本可以接受选项,其中: -s, --service SERVICE,...:指定服务脚本名称,当状态切换时可自动启动.重启或关闭此服务: -a, --address VIP: 指定相关虚拟路由 ...