Flux 思想

本文涉及的产品
资源编排,不限时长
无影云电脑企业版,4核8GB 120小时 1个月
无影云电脑个人版,1个月黄金款+200核时
简介: Flux 是一种用于构建用户界面的应用程序架构,由 Facebook 推出。它通过单向数据流和集中管理的状态来提高应用程序的可维护性和可预测性,主要包含四大组件:Dispatcher、Store、View 和 Action。

一、Flux基本概念

Flux是Facebook用于构建客户端Web应用程序的一种架构模式。它主要是为了解决单向数据流动的问题,是一种和MVC(Model - View - Controller)等模式不同的应用架构理念。

  1. 核心目标

    • Flux的核心目标是通过严格的单向数据流来使应用的状态管理更加可预测。在复杂的JavaScript应用中,尤其是涉及到大量的用户交互和动态数据更新的情况下,数据的流动如果不加以规范,很容易导致混乱,比如难以追踪数据的变化源头、出现意外的UI更新等问题。Flux通过单向数据流来避免这些问题。
  2. 组成部分

    • Dispatcher(调度器):它是Flux架构的中心枢纽。所有的数据变更请求都要通过Dispatcher来分发。例如,在一个简单的待办事项应用中,当用户添加一个新的待办事项时,这个“添加”操作的请求会被发送到Dispatcher。它接收来自视图(View)发出的各种动作(Action),并将这些动作分发给对应的存储(Store)。Dispatcher可以被看作是一个交通警察,指挥着各种动作消息的流向。
    • Stores(存储):Stores包含了应用的状态和业务逻辑。它们负责保存数据,并对数据进行处理。继续以待办事项应用为例,一个待办事项的Store会保存所有的待办事项列表。当Dispatcher分发一个“添加待办事项”的动作时,待办事项Store会根据这个动作来更新自己内部保存的待办事项列表。Stores在更新数据后,会发出一个“change”事件来通知视图(View)数据已经发生了改变。
    • Views(视图):视图是用户界面的呈现部分。它监听Stores发出的“change”事件,当接收到事件后,会从Stores获取最新的数据来更新自己的显示内容。在一个基于React构建的Flux应用中,React组件通常扮演着视图的角色。例如,一个显示待办事项列表的React组件会在收到Store的“change”事件后,重新获取待办事项列表数据,并重新渲染自己,将最新的待办事项列表展示给用户。
    • Actions(动作):它是一个简单的JavaScript对象,包含一个动作类型(type)和一些可能的数据(payload)。动作通常是由视图(View)根据用户交互(如点击按钮、输入文字等)产生的。比如在待办事项应用中,一个“添加待办事项”的动作可能是{type: 'ADD_TODO', payload: '买牛奶'},其中“ADD_TODO”是动作类型,“买牛奶”是动作携带的数据。这些动作会被发送到Dispatcher,从而触发整个数据更新流程。

二、单向数据流示例

以一个简单的计数器应用为例来解释Flux的单向数据流。

  1. 用户交互阶段
    • 当用户在视图(View)中点击一个“增加计数”的按钮时,视图会创建一个“INCREMENT_COUNT”类型的动作(Action),这个动作包含了关于增加计数的信息。
  2. 调度阶段
    • 视图(View)会将这个动作发送到Dispatcher。Dispatcher接收到动作后,会查找注册了该类型动作的Stores,并将动作分发给它们。
  3. 存储更新阶段
    • 计数器的Store接收到“INCREMENT_COUNT”动作后,会根据这个动作来更新自己内部保存的计数状态。比如,将当前计数加1。在更新完状态后,Store会发出一个“change”事件,表示数据已经发生了改变。
  4. 视图更新阶段
    • 视图(View)监听到Store发出的“change”事件,会从Store获取最新的计数数据,然后更新自己的显示内容。这样,用户就能在界面上看到计数已经增加了。

这种单向数据流的好处是,数据的变化路径非常清晰。可以很容易地追踪数据是如何从用户交互产生动作,经过调度和存储更新,最后反映到视图上的。同时,由于数据的流动是单向的,避免了在复杂应用中可能出现的双向数据绑定导致的数据混乱问题。

相关文章
|
6月前
|
设计模式 前端开发 数据库
从MVC到MVVC:软件架构的演变和迭代(二)
从MVC到MVVC:软件架构的演变和迭代
|
存储 缓存 JavaScript
深入浅出 RxJS 核心原理(响应式编程篇)
在最近的项目中,我们面临了一个需求:监听异步数据的更新,并及时通知相关的组件模块进行相应的处理。传统的事件监听和回调函数方式可能无法满足我们的需求,因此决定采用响应式编程的方法来解决这个问题。在实现过程中发现 RxJS 这个响应式编程库,可以很高效、可维护地实现数据的监听和组件通知。
369 0
深入浅出 RxJS 核心原理(响应式编程篇)
|
20天前
|
存储 前端开发 调度
Flux 与传统的 MVC 架构模式区别
Flux是一种用于构建用户界面的架构模式,与传统的MVC架构不同,它采用单向数据流,通过Dispatcher统一管理数据的分发,Store负责存储数据和业务逻辑,View只负责展示数据,使得应用状态更加可预测和易于维护。
|
28天前
|
存储 JavaScript 前端开发
Flux 架构模式和 Redux 区别
Flux架构模式和Redux都是前端状态管理工具,Flux强调单向数据流,通过Dispatcher分发Action到Store,再由View更新;Redux则简化了这一流程,使用单一的全局Store,通过Reducer纯函数处理状态变更,使状态管理更加集中和可预测。
|
28天前
|
存储 前端开发 JavaScript
Flux 架构模式
Flux 是一种用于构建用户界面的架构模式,主要用于管理应用程序的状态。它通过单向数据流将应用的不同部分(视图、存储和调度器)解耦,确保状态更新的可预测性和数据的一致性。
|
前端开发
MVVM框架原理
MVVM框架(Model-View-ViewModel)是一种基于数据绑定的前端架构模式。它将视图逻辑与业务逻辑分离,提供了一种简单而清晰的方式来管理和组织代码。
481 0
|
6月前
|
设计模式 监控 前端开发
从MVC到MVVC:软件架构的演变和迭代(一)
从MVC到MVVC:软件架构的演变和迭代
|
设计模式 前端开发 测试技术
自定义 MVC 框架思想
自定义 MVC 框架思想
41 0
|
Scala 开发工具 git
剖析响应式编程的本质
剖析响应式编程的本质
剖析响应式编程的本质
|
XML JSON 前端开发
Spring MVC框架:第七章:REST架构风格
Spring MVC框架:第七章:REST架构风格
110 0
Spring MVC框架:第七章:REST架构风格
下一篇
无影云桌面