当前位置: 首页 > news >正文

关于Flux,Vuex,Redux的思考

关于Flux,Vuex,Redux的思考

Flux是一种前端状态管理架构思想,专门解决软件的结构问题。
基于Flux的设计思想,出现了一批前端状态管理框架。
他们给出了一些库用于实现Flux的思想,并在Flux的基础上做了一些改进。
在这些框架里,当前最热门的莫过于Redux和Vuex了。
这里是我对Flux,Vuex,Redux的一些思考和总结:


Flux

Flux数据流的顺序是:

View发起Action->Action传递到Dispatcher->Dispatcher将通知Store->Store的状态改变通知View进行改变

ps:基于Flux架构思想写的一个小demo

Redux

Redux相对于Flux的改进:

  • 把store和Dispatcher合并,结构更加简单清晰

  • 新增state角色,代表每个时间点store对应的值,对状态的管理更加明确

Redux数据流的顺序是:

View调用store.dispatch发起Action->store接受Action(action传入reducer函数,reducer函数返回一个新的state)->通知store.subscribe订阅的重新渲染函数

ps:阮一峰老师的Redux+React小demo

Vuex

Vuex是专门为Vue设计的状态管理框架,
同样基于Flux架构,并吸收了Redux的优点

Vuex相对于Redux的不同点有:

  • 改进了Redux中的Action和Reducer函数,以mutations变化函数取代Reducer,
    无需switch,只需在对应的mutation函数里改变state值即可

  • 由于Vue自动重新渲染的特性,无需订阅重新渲染函数,只要生成新的State即可

Vuex数据流的顺序是:

View调用store.commit提交对应的请求到Store中对应的mutation函数->store改变(vue检测到数据变化自动渲染)

ps:Vuex官方文档上的小demo

相关文章:

  • 文字跑马灯
  • 我掌握的linux防火墙知识
  • HttpResponseMessage 调用.net web api
  • CentOS下Samba文件服务器的安装与配置
  • 跟着百度学PHP[4]OOP面对对象编程-12-抽象类
  • 工作中用到的自定义控件
  • MySQL传统主从复制(第一弹)
  • MySQL数据库中日期中包涵零值的问题
  • 添加第三方源需要执行更新的时候报错,倒入公钥
  • JavaScript总结3
  • 一个绚丽的downloading动效分析与实现!
  • 判断2的幂次方(多种算法)
  • VMware中装Win2012并配置Hyper-v
  • MySQL运维之神奇的参数
  • IOS技能点
  • [译]Python中的类属性与实例属性的区别
  • ES6核心特性
  • Laravel Mix运行时关于es2015报错解决方案
  • pdf文件如何在线转换为jpg图片
  • TCP拥塞控制
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 选择阿里云数据库HBase版十大理由
  • ​【已解决】npm install​卡主不动的情况
  • ​Python 3 新特性:类型注解
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​人工智能书单(数学基础篇)
  • ​业务双活的数据切换思路设计(下)
  • #微信小程序(布局、渲染层基础知识)
  • (2022 CVPR) Unbiased Teacher v2
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (java)关于Thread的挂起和恢复
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (一)kafka实战——kafka源码编译启动
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .gitignore文件设置了忽略但不生效
  • .NET : 在VS2008中计算代码度量值
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .net访问oracle数据库性能问题
  • .Net各种迷惑命名解释
  • .net项目IIS、VS 附加进程调试
  • .NET性能优化(文摘)
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • @Bean有哪些属性
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [1127]图形打印 sdutOJ
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [C/C++]数据结构 深入挖掘环形链表问题
  • [java]删除数组中的某一个元素
  • [Linux] 用LNMP网站框架搭建论坛