认识Flux模式

作者: 爱吃芋圆的小w | 来源:发表于2019-06-21 18:53 被阅读12次

传统的前端MVC模式存在一个很严重的问题,就是当项目逻辑越来越复杂时,数据流动很容易变得混乱,而这种问题的解决方案就是只存放一个渲染函数于Controller 中,每次更新重渲染页面,但重渲染容易带来严重的性能与用户体验问题。因此 Facebook提出Flux来解决这个问题。

1. 什么是Flux?

Flux是一套基于dispatcher的前端应用架构模式,它由3大部分组成——dispatcher、store 和 view,其中dispatcher负责分发事件;store 负责保存数据,同时响应事件并更新数据;view负责订阅 store 中的数据,并使用这些数据渲染相应的页面。
Flux的简化流程图如图所示:

Flux流程图.png
  1. dispatcher 与 action
    dispatcher 是 Flux 中最核心的概念,其主要的API有两个,.register(callback)和.dispatch(action),register方法用来注册一个监听器,而 dispatch 方法用来分发一个 action。
  2. store
    store 负责保存数据,并定义修改数据的逻辑。在 Flux 中,store 对外只暴露 getter(读取器)而不暴露 setter(设置器),因此只能读取 store 中的数据而不能进行任何修改。
  3. controller-view
    主要进行 store 与 React 组件(即 view 层)之间的绑定,定义数据更新及传递的方式。它会调用 store 暴露的getter 获取存储其中的数据并设置为自己的 state,在render 时以 props 的形式传给自己的子组件
  4. view
    如果view层操作需要修改数据,则必须使用 dispatcher 分发一个 action,这也是在Flux中唯一修改数据的方式。
  5. actionCreator
    actionCreator是当分发 action 的时候代码有冗余的情况下使用的。将可以重用的action部分代码封装起来,每次修改action只需要在actionCreator 中进行修改即可。

2. 为什么选择Flux模式?

flux的核心思想是数据和逻辑永远单向流动,其模型图如图所示。


Flux模型图

那么Flux是如何解决MVC模式存在的不足呢?主要有两点:

  1. Flux是如何实现单向数据流的呢? Flux 的 dispatcher 定义了严格的规则来限定我们对数据的修改操作。同时,store 中不能暴露 setter 的设定也强化了数据修改的纯洁性,保证了 store 的数据确定应用唯一的状态。
  2. Flux中的view每次重渲染的是Virtual DOM,并由PureRender 保障从重渲染到局部渲染的转换,因此不会影响页面的性能优化。

相关文章

  • 认识Flux模式

    传统的前端MVC模式存在一个很严重的问题,就是当项目逻辑越来越复杂时,数据流动很容易变得混乱,而这种问题的解决方案...

  • Promise学习资料 - 收藏集 - 掘金

    Flux 架构模式 - 前端 - 掘金 在说flux模式之前,我们先说说mvc和mvvm模式 MVC模式 ... ...

  • Flux架构模式

    Flux架构模式 在说flux模式之前,我们先说说mvc和mvvm模式 MVC模式 通过关注数据界面分离,来鼓励改...

  • Flux与Redux

    一. Flux 1. 概念 flux是一套前端应用架构模式,核心是单向数据流 注:flux不是具体的代码实现 2....

  • [译]图解Redux - A cartoon Intro to

    Redux是受Flux启发的一种模式,导致大家对Flux感觉非常迷惑的一件事是Flux和Redux的区别。这篇文章...

  • React学习之认识Flux架构模式

    Flux是Facebook用户建立客户端Web应用的前端架构,它通过利用一个单向的数据流补充了React的组合视图...

  • Flux&Redux

    Flux 解决传统MVC设计模式数据流动混乱问题,来源于Facebook。 在Flux中,数据是单向流动的 Flu...

  • 从Flux到Redux

    单向数据流框架的始祖FluxFlux理念的一个更强实现Redux结合React和Redux 认识Flux flux...

  • redux之理解与使用

    1 redux认识Redux 由 Flux 演变而来,但受 Elm的启发,避开了 Flux 的复杂性。 不管你有没...

  • 学习笔记《Vuex 的响应式编程》

    项目使用 Flux 模式来实现的 SPA,Vuex 是不可绕过的 Flux 是一种架构思想,专门解决软件的结构问题...

网友评论

    本文标题:认识Flux模式

    本文链接:https://www.haomeiwen.com/subject/skbuqctx.html