解析 Facebook 的 Flux 应用架构

405 查看

Flux是由Facebook提出的,用于组织应用的一种架构,它基于一个简单的原则:数据在应用中单向流动。这就是所谓的“单向数据流”,简单的记法是把数据比作鲨鱼:鲨鱼只能向前游

Facebook公布了一些Flux的范例,至少有六种第三方库实现如雨后春笋般涌现。在本文中,当我们提及“Flux”时,我们讲的是Facebook的实现

一个Flux例子

为理解 Flux,咱们来完整做一个 Todo 基本应用。在 Facebook 的 Flux 代码库,可以得到该项目的完整代码。

加载ToDo条目

当应用启动的时候,ToDoApp的响应模块获得存储在ToDoStore中的数据并展示,ToDoStore完全不知道ToDoApp的模块。如果把模块看做是View部分、ToDoStore看做Model部分,那么目前为止,这和MVC没什么不同。

在这个简单的例子中,我们不关心 ToDoStore 如何加载初始化数据。

创建一个新的ToDo条目

ToDoApp组件有一个用于创建新条目的表格,当用户提交了表格后,它就会如上图演示的那样,从Flux系统中踢出一条数据流。

1. 组件通过调用自己的回调方法来处理表格提交。

2.  组件回调方法调用ToDoAction的Create方法。

3. ToDoAction创建一个TODO_CREATE类型的动作。

4. 该动作被发送到调度器。

5. 调度器把该动作传递到Store中所有注册了该动作的回调方法中。

6. ToDoStore有一个注册了的监听TODO_CREATE动作的回调方法,因此更新了自己的数据。

7. 在更新了自己的数据后,ToDoStore发出了一个变更事件。