flux是facebook在2014开源的一款用于构建用户界面的应用程序框架
核心思想:数据和逻辑永远单向流动
MVC是一种架构设计模式(数据界面分离)。
Model(业务数据)
View(用户界面)
Controller(控制器:管理逻辑和用户输入)
MVVM VM替代C
ViewModel(数据视图,view与model之间的桥梁)
flux
//Action -> Dispatcher -> Store -> View >> Action >> Dispatcher ...
dispatcher(分发事件)
.register(callback) //注册一个监听器
.dispatch(action) //分发一个action = { type: 'SUCCESS', payload: data }, type必须,payload、error、meta可选
store(保存数据)
负责保存数据并定义修改数据的逻辑,同时调用dispatcher的register方法将自己注册为一个监听器。
每当我们使用dispatch方法分发一个action时,store注册的监听器就会被调用,同时得到这个action
作为参数。
store一般会根据action的type字段来确定是否响应这个action。若需要响应,则会根据action中的信息
修改store中的数据,并触发一个更新事件
store对外只暴露一个getter,不暴露setter(外部只读不改)
view(订阅store中的数据)存在一个controller-view的角色将所有view与store绑定
显示界面,只能通过dispatcher分发一个action修改数据
controller-view是整个应用最顶层的view,绑定view和store,定义数据更新与传递的方式。
在react中,controller-view调用store的setter获取数据并设置为自己的state,在render
时以props的形式传给自己的子组件。
当store响应某个action并更新数据后,会触发一个更新事件,这个更新事件就是在controller-view
监听的。当store更新时,controller-view会重新获取store中的数据,然后调用setstate触发重绘
actionCreator是用来创建action的
网友评论