漫谈FLUX
来源:互联网 发布:淘宝3o一45岁女防晒衣q 编辑:程序博客网 时间:2024/06/10 18:26
为什么需要FLUX?
react的核心是组件,严格意义上说react主要负责VIEW层的东西,当应用复杂程度高的时候,它的state会变得十分复杂,这个时候我们需要一个工具解决除了VIEW层之外的东西,所以我们需要FLUX。
什么是FLUX?
FLUX是FACEBOOK提出的一套前端应用架构模式,核心概念是单向数据流。注意它不是一个具体的框架,它有很多实现,比如REDUX,这些才是框架。
什么是单向数据流?
在MVC中数据流是双向的,MODEL<=>CONTROLLER<=>VIEW,同样面临在项目复杂度高的时候难以维护的问题。
而单向数据流是这样运作的,ACTION=>DISPATCHER=>STORE=>VIEW。
其中,ACTION是描述行为的对象,包含信息 ; DISPATCHER是信息的分发中心,它可以执行ACTION、注册回调函数、回调中处理STORE的内容 ; STORE被处理后,会向其他地方发送CHANGE广播,告诉别人我被变更了。VIEW接收到CHANGE信号之后,就可以改变UI。
所以一个使用FLUX的REACT项目的目录结构是这样的:
COMPONENTS存放组件、ACTIONS中注册程序中所有的ACTIOIN、DISPATHCER写程序中所有的调度、STORES则负责管理程序中数据的存放。
在ACTION就是行为,发生某个行为时,我们要告诉DISPATCH,DISPATCH要分发的其实是一个个对象,这个对象有个说明字段叫ACTIONTYPE,还有一个字段用来表明它所传递的信息。为了方便代码复用,FLUX提出了ACTION CREATOR的概念,举个《REACT全栈》这本书里的例子:
在一个TODOACTION里,有一个ACTION对象
const Todoaction={
//把DISPATCH分发的对象包裹在一个函数里。
create(todo){
Dispatcher.dispatch({
actionType:'CREATE_TODO',
todo
})
};
...
}
DISPATCH还有一个API,就是REGISTER,这个接口用于注册不同事件的处理回调函数,在回调函数中对STORE的数据进行处理。
我理解STORE就像一个数据库,负责增删改查及存储数据,除了STORE,任何人都不能对直接对数据进行处理。官方说法叫STORE是数据更新的唯一场所。
所以就是ACTION通过DISPATCH的时候触发回调函数来操作STORE,通过REGISTER来注册要触发的回调函数。
这种形式和PUB-SUB订阅发布模型比较像,但是是有不同的,很重要的一点是,DISPATCH的回调函数没有订阅到一个特定的事件或者频道中,REGISTER只接受一个函数作为回调,所有动作都发送到同一个回调。
《REACT全栈》里还提到了另一个重要区别,DISPATCH回调可以延迟执行,知道其他回调函数执行完毕。
- 漫谈FLUX
- flux
- flux
- flux
- Flux
- react Flux
- flux 基础
- react flux
- 理解Flux
- react flux
- 关于flux
- Flux架构
- Flux Pattern
- 漫谈
- 漫谈
- Aug 09 - Flux
- Android - Flux架构
- Android - Flux架构
- 【Python】基于python的urllib库编写网络爬虫
- Net Core使用日志 NLog
- os 和os.path 区别及使用
- 面向对象编程中Association、Aggregation和Composition的区别
- 动态规划解决01背包问题
- 漫谈FLUX
- (4)多线程
- 关于imagetype() & IMG_JPG
- Scrapy 批量获取URL以及进一步拔取网页链接数据
- ZeroMQ
- as中依赖fastjson
- 在Ubuntu16.04配置Nginx1.10.3,基础配置教程
- Oracle 子查询展开(subquery unnesting)
- 稀疏编码及其改进(ScSPM,LLC,super-vector coding)