flux沉思录:面向store和通信机制的前端框架

一、综述

Flux 被用来描述“单向”的数据流,且包含某些特殊的事件和监听器。

响应式编程是一种面向数据流和变化传播的编程范式

flux是响应式编程的一种?

 

Flux 在本质上采用了模型-视图-控制器 (MVC) 的结构,但引入了很高的复杂性。

https://www.ibm.com/developerworks/cn/web/wa-manage-state-with-redux-p1-david-geary/?mhq=使用%20Redux%20管理状态

 

二、store与model:

store相当于其它平台中的纯数据model;

或者java中的bean;

store在flux中处于中心节点的位置;

 

三、Flux架构中的结点:

事件源(包含UI)、store、UI组件;

 

四、flux中的通信机制

1、由事件源到store的通信机制;

 

1)通信信道:

var AppDispatcher = require('../dispatcher/AppDispatcher')

 

2)发送端表示层:将事件解释为通信数据并发送

var ButtonActions = {

  addNewItem: function (text) {

    AppDispatcher.dispatch({

      actionType: 'ADD_NEW_ITEM',

      text: text

    });

  },

};

 

3)接收端表示层:将通信数据解释为具体信息和操作

AppDispatcher.register(function (action) {

  switch(action.actionType) {

    case 'ADD_NEW_ITEM':

      ListStore.addNewItemHandler(action.text);

      ListStore.emitChange();

      break;

    default:

      // no op

  }

})

 

4)通信数据的格式:Action

actionType: 'ADD_NEW_ITEM',

text: text

 

5)表示层将通信信道和通信的端点进行了连接:事件源-信道-store;

 

2、由store到UI的通信机制;

1)EventEmitter.prototype提供了变化的订阅和发布的机制;

ListStore继承了EventEmitter.prototype,因此就能使用ListStore.on()和ListStore.emit(),来监听和触发事件了。

 

2)通信的信道即为EventEmitter.prototype,它提供的两个端点接口即位ListStore.emit(),ListStore.on();

 

3)通信的数据为store;

 

4)通信的端点为store和UI组件;

 

5)不需要表示层;

 

http://www.ruanyifeng.com/blog/2016/01/flux.html

 

 Flux is the application architecture that Facebook uses for building client-side web applications. It complements React's composable view components by utilizing a unidirectional data flow. It's more of a pattern rather than a formal framework

 

 

android

 

posted @ 2019-06-11 18:37  zzfx  阅读(306)  评论(0编辑  收藏  举报