美文网首页
Flux架构实践

Flux架构实践

作者: 無式 | 来源:发表于2017-09-17 13:41 被阅读0次
  • 从最开始学习React就接触到Flux架构,接着前端组件化框架都涉及到Flux概念,例如Vue.js中的Vuex。一直以来Flux都不是很好理解,但俗话说实践出真知,只有在真正的项目场景上使用过了,才知道一个架构概念为什么要如此设计,可以带来什么样的好处。

Flux定义

  • Flux是一种架构思想,用来解决软件结构问题。
  • Flux将一个应用分成四个部分:

View: 视图层
Action(动作):视图层发出的消息(比如mouseClick)
Dispatcher(派发器):用来接收Actions、执行回调函数
Store(数据层):用来存放应用的状态,一旦发生变动,就提醒Views要更新页面

用一张流程图来表示:


Flux流程图
  • Flux中,数据是单向流动的:
  1. 用户访问 View
  2. View 发出用户的 Action
  3. Dispatcher 收到 Action,要求 Store 进行相应的更新
  4. Store 更新后,发出一个"change"事件
  5. View 收到"change"事件后,更新页面

一个实践和理解

  • 上面的定义在网上一搜就有。但相信很多人一开始和我一样,定义看的懂,但并不理解为什么要这么做,这样做可以带来什么好处?接下来试着用一个在实际项目中的场景来说明一下。

业务场景

公司管理功能界面
  • 界面有两个大区域组成:
  1. 顶部Header:显示当前操作的公司名称
  2. 下部Workplace:主要功能工作区,包含一个Tab组件。
  • Workplace中第一个Tab是公司选择功能:填写公司名称,点击确定之后输入的公司名称成为全局变量,并且显示在Header中。
  • 在其他Tab页面中可以获取到当前设定的公司名称值。

结构设计

  • 使用现在也非常流行的Vue.js+Vuex来解决这个问题。
  • 有一些前端模块化框架经验的同学应该很容易想到:
  1. 把两个主区域(Header, Workplace)分成两个模块(两个.vue文件)。
  2. Tab中的N个功能页面也对应着N个模块(N个.vue文件)。
  3. 使用route实现点击Tab页在Workplace中切换不同的功能模块。
  • 实现的结构大致如下:


  • 那么现在的问题就是如何将在CompanySelect.vue中设置的公司名称,传给Header.vue来展示。
  • 按前端模块化的思路,每个模块(.vue.jsx)都有自己独立的stateprops来处理数据与界面渲染的绑定。
  • 在这个功能场景下,可以通过App.vue在创建Header.vueCompanySelect.vue模块的时候,设定回调函数,在 CompanySelect.vue输入公司名称后,由回调函数把值最终传给Header.vue来显示:

Flux化

  • Flux的思路来重构:
  1. 一个项目(或者大模块)将会确定一个
  2. 在这个根上拥有state和改变state的事件方法。
  3. 根之下的功能模块“舍弃”自己的state,数据的来源与变化改为根的state。
  4. 功能模块中的操作事件只会触发根上的事件方法,不实现具体的业务逻辑。
Flux化的结构
  • 在这个例子中,CompanySelect.vue本身将不会保存公司名称的变量,“确定”按钮只把输入的值通过事件传给根(App.vue),由根进行保存和传递给其他组件。
  • 失去state和业务逻辑的功能模块,将会弱化成单纯的显示组件,所有的数据供给和业务逻辑由来组装提供。
  • 这种改变,有利于复杂项目的前端模块化,实现显示组件的复用化。

参考资料

相关文章

  • Flux架构实践

    从最开始学习React就接触到Flux架构,接着前端组件化框架都涉及到Flux概念,例如Vue.js中的Vuex。...

  • Android开发之Flux架构

    Android开发之Flux架构 什么是Flux? Flux是一种软件开发架构,开发流程遵循Restful的点对点...

  • 第46期 带你走进医疗行业的体验设计 & 前端开发与架构师 &

    前端架构101:从 Flux 进化到 Model-View-Presenter 在 Flux 架构中,有两个问题依...

  • Flux框架

    Flux用来解决React在结构上的问题,从Flux也衍生了Redux,Flux也类似MVC这一类的架构,Flux...

  • android Flux架构初探

    Flux架构初探 引用facebook官网的一段介绍: Flux is the application archi...

  • 实践移动端的Flux架构

    欢迎Follow我的GitHub, 关注我的简书. 其余参考Android目录. 任何架构最终目的都是让程序更加有...

  • Flux架构

    Flux基本概念 四个部分 View: 视图层 Action: 视图层发出的动作(比如mouseClick等) D...

  • Flux架构

    当应用复杂程度增加时,state会变得越来越复杂,只用React开发将会变得力不从心。不仅仅是view层的内容,还...

  • Flux 架构

    Flux 是什么? 简单说,Flux 是一种架构思想,专门解决软件的结构问题。它跟MVC 架构是同一类东西,但是更...

  • Flux架构

    Flux应用有三个主要部分:Dispatcher调度 、Store存储和View视图,这些不应该和MVC:Mode...

网友评论

      本文标题:Flux架构实践

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