前言

vue 本身更偏向于 view 层的框架,尤大大并没有一开始就给他一个完整的 mvvm 架构。

在 vue 的世界里 vuex 是用来实现 mvvm 中关键的 vm 层(视图模型层),你甚至可以认为它就是 vue奶妈,它总是可以为 vue的顺畅运行提供强大的支持。

什么是 MVVM

  1. 从图中可以看到,所谓的 MVVM 指的有框架中的三个部分 M(Model)、 V(View)、 VM(ViewModel)

  2. View:指的是视图层,我们一般通过html来实现它,它可以与 vm(视图模型)层 的数据数据进行双向绑定,同时也可以绑定 vm(视图模型) 层的事件处理方法。

  3. Model:指的是数据模型层,它类似于一个数据的仓库,在很多情况下我们是通过 api层来实现数据支持,它可以读取和处理从服务端传过来的数据,或者把特定的数据加工后送到服务端。

  4. ViewModel:指的是界面模型层,它包含了具体某个时刻界面状态的数据,更是可以把 M(模型)层的数据处理成合适界面显示结构,也可以把 V(视图)层生产出来的数据送给 M(模型)层。

vue组件提供的是一个 vm层的实现,在没有引入vuex的情况下,这会导致 vue 组件非常重、代码复用率低。

VUEX 是什么

  • 它是一个组件状态的管理工具,你可以认为它更贴近于界面而不是数据,但实际上它是充当了界面和数据的桥梁(这正是 vm 层的定义)。

  • 所以其实我们还需要实现一个 m 层,一般情况下我们只需要用纯的 js 来实现一个数据的增删改查处理的层便可(你可以认为是 api 层)。

VUEX 运行原理

vuex 提供的是一套状态管理的模式,简单点说就是把当前应用的所有界面组件的状态集中存储在一个唯一的对象中,同时该对外提供一套标准的状态消费及维护接口。

从图中可以看到 vuex 主要做了这么几件事

  1. 从 api (模型)层读入数据同时也可以把数据发送给模型层

  2. 把从模型层读取到的数据,通过 mutation写入到 state当中

  3. state会作为视图数据直接提供给 组件进行消费使用

  4. 组件可以把用户的行为(界面事件)输送给 actions

总结

在使用 vuex我们很有必要先理解好 mvvm的开发模式,好的设计是成功的一半,用好 vuex这个 vue的 vm层,可以让我们的开发更加的得心应手。

欢迎关注同名公众号,一起讨论前端技术。


Thanks!

vuex多多,怎么当好一个奶妈的更多相关文章

  1. vuex中this.$store.dispatch和this.$store.commit的区别(都是调用vuex中的方法。一个异步一个同步)

    dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch('action方法名',值) commit:同步操作,写法:this.$store.commit( ...

  2. 用vuex写了一个购物车H5页面的示例代码

    用vuex写了一个购物车H5页面的示例代码:https://www.jb51.net/article/152008.htm 通过购物车的一个案列,把vuex学习了一篇. vuex概念浅谈 Vuex 是 ...

  3. vue-cli安装以及创建一个简单的项目(二)(vuex使用、发行一个简单的app)

    1.vuex的使用 vuex是vue的状态管理中心,vuex来保存我们需要管理的状态值,值一旦被修改,所有引用该值的地方就会自动更新,常用于: 1.多个视图依赖同一状态(l例:菜单导航) 2.来自不同 ...

  4. 结合 Vue.observable 写一个简易 Vuex

    作为 Vue 全家桶的一员,Vuex 的重要性不言而喻,不管是用来管理状态,还是封装 Controler 都很好用 不过在一些体量较小的项目中,为了几个简单的状态或者处理函数而引入 Vuex,就像是高 ...

  5. 结合 Vuex 和 Pinia 做一个适合自己的状态管理 nf-state

    一开始学习了一下 Vuex,感觉比较冗余,就自己做了一个轻量级的状态管理. 后来又学习了 Pinia,于是参考 Pinia 改进了一下自己的状态管理. 结合 Vuex 和 Pinia, 保留需要的功能 ...

  6. 对vuex的一点理解

    vuex是vue.js的一个状态管理工具,它适用于解决平行组件之间的数据共享问题.一般情况下,我们更多的是父子组件之间通过props或$emit来实现传值,如何不满足以上情况那只有使用vuex进行解决 ...

  7. vue学习指南:第十五篇(详细) - Vuex

    Vuex 一.基础 1. Vuex 相当于 vue的数据仓库 2. Vuex 是 vue 的状态管理工具 3. Vuex中的 state 只能通过mutations 改变 4. Vuex很适合做购物车 ...

  8. 挑战全网最幽默的Vuex系列教程:第一讲 Vuex到底是什么鬼

    先说两句 官方已经有教程了,为什么还要写这个教程呢?说实话,还真不是我闲着蛋疼,官方的教程真的是太官方了,对于刚入门 Vuex 的童鞋来说,想必看官方的教程,很多地方就如同看圣经一样,比如「欧玛尼玛尼 ...

  9. vuex(1.0版本写法)

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

随机推荐

  1. 第一章 java基本多线程技能

    第一章 java多线程技能 1 线程:进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理顺序时发生的活动:是程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位. ...

  2. Python-发送邮件验证码

    前言 ​ 关于 Python 这个栏目,咕了几个月了,今天讲讲如何发送验证码并验证. ​ 因为部分原因,写这篇文章的时候心情是不太好的,播放首歌吧. 代码 导入 导入yagmail,random和ti ...

  3. 阿里云Linux CentOS8.1 64位服务器安装LNMP(Linux+Nginx+MySQL+PHP)

    LNMP环境和软件版本: 名称 版本号 查询命令 Linux系统 CentOS Linux release 8.1.1911 (Core) cat /etc/redhat-release Nginx ...

  4. java语言基础(八)_接口_多态

    接口 1. 接口定义的基本格式 接口就是多个类的公共规范,是一种引用数据类型,最重要的内容就是其中的:抽象方法. 如何定义一个接口的格式: public interface 接口名称 { // 接口内 ...

  5. Drozer简单使用

    1.Drozer简介   Drozer是一款针对Android系统的安全测试框架.Drozer可以通过与dalivik VM交互.与其他应用程序的IPC端点交互.与底层操作系统的交互,来避免正处于开发 ...

  6. Win10+YOLOv3完整安装过程(亲测可运行)

    最近了解并尝试在Win10安装YOLOv3,参考了十几篇文章,发现每个人都有自己的安装方式,最初尝试用cmake编译,虽然安装完成,但无法使用GPU,坑非常多,经2天努力终于安装成功,分享并记录自己的 ...

  7. Kafka消费者拉取数据异常Unexpected error code 2 while fetching data

    Kafka消费程序间歇性报同一个错: 上网没查到相关资料,只好自己分析.通过进一步分析日志发现,只有在拉取某一个特定的topic的数据时报错,如果拉取其他topic的数据则不会报错.而从这个异常信息来 ...

  8. Uni-app登录态管理(vuex)

    应用中,保持登录状态是常见需求,本文讲解使用uni-app框架时如何保持用户登录状态. 即:初次进入应用为未登录状态------->登录---------->关闭应用,再次打开------ ...

  9. Django---进阶12

    目录 Auth模块 方法总结 如何扩展auth_user表 项目开发流程 表设计 作业 Auth模块 """ 其实我们在创建好一个django项目之后直接执行数据库迁移命 ...

  10. Django之ORM查询操作详解

    浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Python脚本中调用Django环境 其他操 ...