vuex多多,怎么当好一个奶妈
前言
vue本身更偏向于 view 层的框架,尤大大并没有一开始就给他一个完整的 mvvm 架构。在
vue的世界里vuex是用来实现mvvm中关键的vm层(视图模型层),你甚至可以认为它就是vue的奶妈,它总是可以为vue的顺畅运行提供强大的支持。
什么是 MVVM
从图中可以看到,所谓的
MVVM指的有框架中的三个部分M(Model)、V(View)、VM(ViewModel)View:指的是视图层,我们一般通过html来实现它,它可以与vm(视图模型)层 的数据数据进行双向绑定,同时也可以绑定vm(视图模型) 层的事件处理方法。Model:指的是数据模型层,它类似于一个数据的仓库,在很多情况下我们是通过api层来实现数据支持,它可以读取和处理从服务端传过来的数据,或者把特定的数据加工后送到服务端。ViewModel:指的是界面模型层,它包含了具体某个时刻界面状态的数据,更是可以把M(模型)层的数据处理成合适界面显示结构,也可以把V(视图)层生产出来的数据送给M(模型)层。
vue组件提供的是一个vm层的实现,在没有引入vuex的情况下,这会导致vue组件非常重、代码复用率低。
VUEX 是什么
它是一个组件状态的管理工具,你可以认为它更贴近于界面而不是数据,但实际上它是充当了界面和数据的桥梁(这正是
vm层的定义)。所以其实我们还需要实现一个
m层,一般情况下我们只需要用纯的js来实现一个数据的增删改查处理的层便可(你可以认为是 api 层)。
VUEX 运行原理
vuex 提供的是一套状态管理的模式,简单点说就是把当前应用的所有界面组件的状态集中存储在一个唯一的对象中,同时该对外提供一套标准的状态消费及维护接口。
从图中可以看到 vuex 主要做了这么几件事
从
api(模型)层读入数据同时也可以把数据发送给模型层把从模型层读取到的数据,通过
mutation写入到state当中state会作为视图数据直接提供给组件进行消费使用组件可以把用户的行为(界面事件)输送给
actions
总结
在使用 vuex我们很有必要先理解好 mvvm的开发模式,好的设计是成功的一半,用好 vuex这个 vue的 vm层,可以让我们的开发更加的得心应手。
欢迎关注同名公众号,一起讨论前端技术。
Thanks!
vuex多多,怎么当好一个奶妈的更多相关文章
- vuex中this.$store.dispatch和this.$store.commit的区别(都是调用vuex中的方法。一个异步一个同步)
dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch('action方法名',值) commit:同步操作,写法:this.$store.commit( ...
- 用vuex写了一个购物车H5页面的示例代码
用vuex写了一个购物车H5页面的示例代码:https://www.jb51.net/article/152008.htm 通过购物车的一个案列,把vuex学习了一篇. vuex概念浅谈 Vuex 是 ...
- vue-cli安装以及创建一个简单的项目(二)(vuex使用、发行一个简单的app)
1.vuex的使用 vuex是vue的状态管理中心,vuex来保存我们需要管理的状态值,值一旦被修改,所有引用该值的地方就会自动更新,常用于: 1.多个视图依赖同一状态(l例:菜单导航) 2.来自不同 ...
- 结合 Vue.observable 写一个简易 Vuex
作为 Vue 全家桶的一员,Vuex 的重要性不言而喻,不管是用来管理状态,还是封装 Controler 都很好用 不过在一些体量较小的项目中,为了几个简单的状态或者处理函数而引入 Vuex,就像是高 ...
- 结合 Vuex 和 Pinia 做一个适合自己的状态管理 nf-state
一开始学习了一下 Vuex,感觉比较冗余,就自己做了一个轻量级的状态管理. 后来又学习了 Pinia,于是参考 Pinia 改进了一下自己的状态管理. 结合 Vuex 和 Pinia, 保留需要的功能 ...
- 对vuex的一点理解
vuex是vue.js的一个状态管理工具,它适用于解决平行组件之间的数据共享问题.一般情况下,我们更多的是父子组件之间通过props或$emit来实现传值,如何不满足以上情况那只有使用vuex进行解决 ...
- vue学习指南:第十五篇(详细) - Vuex
Vuex 一.基础 1. Vuex 相当于 vue的数据仓库 2. Vuex 是 vue 的状态管理工具 3. Vuex中的 state 只能通过mutations 改变 4. Vuex很适合做购物车 ...
- 挑战全网最幽默的Vuex系列教程:第一讲 Vuex到底是什么鬼
先说两句 官方已经有教程了,为什么还要写这个教程呢?说实话,还真不是我闲着蛋疼,官方的教程真的是太官方了,对于刚入门 Vuex 的童鞋来说,想必看官方的教程,很多地方就如同看圣经一样,比如「欧玛尼玛尼 ...
- vuex(1.0版本写法)
Vuex 是一个专门为 Vue.js 应用所设计的集中式状态管理架构. 官方文档:http://vuex.vuejs.org/zh-cn/ 2.0和1.0都能在此找到 每一个 Vuex 应用的核心就 ...
随机推荐
- 洛谷 P1313 【计算系数】
这道题只要肯动手还是挺水的 进入正题 我们先枚举几个找找规律(这里先省略x,y): k = 0 :\(1\) k = 1 : \(a\) \(b\) k = 2 : \(a^{2}\) \(2ab\) ...
- Spring Security 实战干货:图解Spring Security中的Servlet过滤器体系
1. 前言 我在Spring Security 实战干货:内置 Filter 全解析对Spring Security的内置过滤器进行了罗列,但是Spring Security真正的过滤器体系才是我们了 ...
- Shein一面(视频面)07.07
应聘职位:Java工程师 时长:30min 面经: Spring讲一下 SpringAOP用到什么设计模式 JVM包括什么 运行时数据区包括什么 什么时候入栈,出栈 Sychronized和可重入锁区 ...
- redis源码学习之工作流程初探
目录 背景 环境准备 下载redis源码 下载Visual Studio Visual Studio打开redis源码 启动过程分析 调用关系图 事件循环分析 工作模型 代码分析 动画演示 网络模块 ...
- 萌新计划 PartⅠ
Part Ⅰ web1-7 题目总体代码框架如下,其中过滤内容不同,大体上通过构造出id=1000类似的语句进行绕过,得到flag <?php # 包含数据库连接文件 include(" ...
- tinymce 设置和获取编辑器的内容
$('目标元素').html(插入的内容) //设置tinymce编辑器的内容tinymce.get('目标元素').getContent() //获取tinymce编辑器的内容
- Linux05 /nginx
Linux05 /nginx 目录 Linux05 /nginx 1. nginx安装.配置 2. nginx的多虚拟主机功能 3. nginx的访问日志功能,404页面功能 4. nginx的反向代 ...
- hihoCoder 1039 字符消除 最详细的解题报告
题目来源:字符消除 解题思路: 1.在给定字符串中的任意位置插入'A'.'B'.'C'中的任意一个字符,然后计算插入后的字符经过消除后最短的字符串长度: 2.在计算字符消除后最短长度时,智能一遍一遍的 ...
- C语言笔记、文件io的操作
一个自己定义的头文件: 文件名为 xxx.h 内容: #ifndef _MYHEAD_H #define _MYHEAD_H #include<stdio.h>#include< ...
- Redis 分布式锁(一)
前言 本文力争以最简单的语言,以博主自己对分布式锁的理解,按照自己的语言来描述分布式锁的概念.作用.原理.实现.如有错误,还请各位大佬海涵,恳请指正.分布式锁分两篇来讲解,本篇讲解客户端,下一篇讲解r ...