如果让你用一句话总结一下什么是flux,该怎么说?

官网上有这样的介绍:flux是一种思想,一种框架,是facebook给react。。。

这样的解释对程序员来说,显得过于抽象又不具体了。

阮老师的文章,也将官网的介绍很好的翻译了一遍。读了以后可以了解到flux是由哪些部分组成(store,dispatcher,action,view)。但就算知道了这些,还是没法很好的解答程序员同学们心中的疑惑,flux到底是什么,用来做什么的,为什么用它,用它有什么好处呢?

如果有一本历史书,写了flux诞生的各个事件,也许事情就没那么复杂了。现在没有这本书,我们使用flux的过程,就像是盲人摸象。那么现在,摸了很久,摸了很多次,很全面的摸过这个大象以后,我们来总结一下我们摸到了什么吧。

1.flux是一个数据中间层,用于规范的管理数据,这些数据往往以状态(state)来呈现。

2.flux不是必须的,但当你使用react或vue等组件化的mvvm框架的时候,flux似乎变得特别的顺手起来。

3.越是复杂的业务逻辑、数据处理、数据模板,越是将你快速的送到flux面前。

总结到一句话就是:flux是一个善于对复杂数据模型进行规范管理的中间层,并且它与组件化的mvvm框架有互补作用

复杂是一个相对的概念。那么复杂到什么地步,我们就需要flux了呢?

来看一个例子:

假定组件化开发程序中,三个不同层级的组件使用了同一个数据对象作为数据模型的一部分。三个组件对共用的数据对象各有操作,又互相影响。

这种情况下有两个比较严重的问题:

1.三个不同组件对数据对象的操作各不相同,操作部分因各个组件环境不同,操作代码将与组件自身的业务代码混在一起。不方便后期维护。

2.换个程序员就很难找齐操作过这部分数据的三个不同位置的组件,以及组件中操作数据的各行代码了。

而使用flux可以统一数据操作接口(action,dispatcher),方便查找操作数据的入口(调用了相同的action/dispatcher),这就解决了上边提出的两点问题,增强了数据的可维护性,可扩展性

再来看一个例子:

例子叫做状态管理好了:一个组件,要undo,redo,进入不同的历史状态。

用户可以手动构建单独的状态管理器,而flux可以通过store,dispatcher,action轻松的实现对状态数据的管理。从这个角度来看,flux又可以被看做是一个复杂状态管理器,只不过flux不局限于管理组件的状态,而是更深层次的将数据与状态视为一体。从mvvm的角度来看,管理数据也是在管理状态

so, flux带给我们的是一种面对复杂问题的解决方案,你get到了吗?

一句话总结flux,以及我们为何需要flux的更多相关文章

  1. 简单了解Flux,注意这是一个设计思想,是一个架构!!!!!

    在RN开发中,我们总是需要去更改一个组件个数据(也就是所谓的状态),我们一般是采用是在初始化的函数constror()(好像拼错了) 在这个函数里面申明我们的初始化数据(状态)eg:this.stat ...

  2. 【go】脑补框架 Express beego tornado Flux reFlux React jsx jpg-ios出品

    http://goexpresstravel.com/ 今天 Express 的作者 TJ Holowaychuk 发了一篇文章,正式宣告和 Node.js 拜拜了,转向 Go 语言. Go vers ...

  3. [React] 07 - Flux: uni-flow for react

    相关资源 Ref: [Android Module] 03 - Software Design and Architecture Ref: Flux 架构入门教程 Ref: 详解React Flux架 ...

  4. Flux architecture

    [Flux architecture] Flux is a pattern for managing data flow in your application. The most important ...

  5. springweb flux 服务器推送事件

    以前做服务器推送一般用轮询,后端主动给客户端推送不是很好解决.有时候也可以采用websocket 现在看了springwebflux,用它自带的方法做服务器推送方便多了. 代码如下: import o ...

  6. springweb flux 编程模型

    Spring WebFlux 编程模型是在spring5.0开始,springbot2.0版本设计出来的新的一种反应式变成模型.它脱胎于reactor模式,是java nio 异步编程模型. 传统一般 ...

  7. 理解Flux架构

    本文摘自<Flux架构入门教程>和<谈一谈我对 React Flux 架构的理解>.也有自己的观点和总结.转载请注明出处. 一.Flux架构描述 1. Flux是什么 Flux ...

  8. 从Flux到Redux详解单项数据流

    从Flux到Redux是状态管理工具的演变过程,但两者还是有细微的区别的.但是最核心的都还是观察者模式的应用. 一.Flux 1. Flux的处理逻辑 通俗来讲,应用的状态被放到了store中,组件是 ...

  9. 理顺react,flux,redux这些概念的关系

    作者:北溟小鱼hk链接:https://www.zhihu.com/question/47686258/answer/107209140来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  10. 浅谈 React、Flux 与 Redux

    React React 是一个 View 层的框架,用来渲染视图,它主要做几件事情: 组件化利用 props 形成单向的数据流根据 state 的变化来更新 view利用虚拟 DOM 来提升渲染性能 ...

随机推荐

  1. 学习笔记66_DBSCAN聚类算法

  2. Visual Studio Online 的 FAQ:iPad 支持、自托管环境、Web 版 VS Code、Azure 账号等

    北京时间 2019 年 11 月 4 日,在 Microsoft Ignite 2019 大会上,微软正式发布了 Visual Studio Online 公开预览版!发布之后,开发者们都为之振奋.同 ...

  3. [考试反思]0805NOIP模拟测试13:窒息

    呼啊...苟住了.rank #3 第二次分机房的收官之战.发挥比较稳定 然而差点就不稳定了!!! 过了一遍题目,难度大约是升序,但是一道都不会做!!! 本来感觉T1是一道数学题,以为45分钟以内可以切 ...

  4. 手机信号G、E、O、3G代表什么意思?

    G指GPRS,是2.5G网络,属于GSM网络,也就是说这项技术位于第二代(2G)和第三代(3G)移动通讯技术之间,GPRS的传输速率可提升至56甚至114Kbps,已经将2017年确定为关闭GSM网络 ...

  5. js中关于执行的顺序及变量存放方式的一点记录

    Markdown在线编辑器 - www.MdEditor.com 1 首先关于数据类型,有基本数据类型,和引用数据类型 基本数据类型有:number,string,boolean等:引用数据类型一般指 ...

  6. Tomcat+nginx+Keepalived部署实现集群

    Tomcat+nginx+Keepalived部署实现集群 环境说明: 系统:Centos-7 主机:Centos-7 x3 IP地址: 服务器1(192.168.10.102/24) 服务器2(19 ...

  7. C++中对C的扩展学习新增语法——For循环以及AUTO类型

    For循环以及AUTO类型 For代码实现: AUTO类型: 1.auto自动类型推导,省事. 2.auto主要在模板中用的多,模板的类型比较长,使用auto可以简化代码. 3.不要轻易使用,我们在编 ...

  8. [剑指offer]删除链表中重复的结点(把重复的都删掉,1个不留)

    ①题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后为 ...

  9. [LC]747题 Largest Number At Least Twice of Others (至少是其他数字两倍的最大数)

    ①中文题目 在一个给定的数组nums中,总是存在一个最大元素 . 查找数组中的最大元素是否至少是数组中每个其他数字的两倍. 如果是,则返回最大元素的索引,否则返回-1. 示例 1: 输入: nums ...

  10. 第一篇: openJDK源码编译安装--mac版本

    1.为什么要编译JDK 想要一探JDK内部的实现机制,最便捷的路径之一就是自己编译一套JDK,通过阅读和跟踪调试JDK源码去了解Java技术体系的原理,虽然门槛高一点,但肯定比阅读各种书籍,文章,博客 ...