小白视角看iflux

目录

  • 参考文档
  • what is iflux ?
  • react.js + immutable.js
  • React的界面刷新
  • Immutable的特点
  • flux简介
  • iflux特性及demo

参考文档

本人纯前端小白,学习两周基本知识后遇到了一个全新的框架----iflux,写此博客整理和记录学习内容。先将参考文档列出来,方便大(自)家(己)的翻阅。

what is iflux ?

什么是iflux呢?其实我也不知道,项目上要用而已(逃~~~)。首先,我们先看iflux在npm上的 官方文档

what is iflux ?

iflux = immutable.js + react.js

这个式子不懂没关系。继续往下翻文档,找到了这么一句话:

xxxxxxxx
xxxxxxxx
于是,顺其自然的写了iflux去更好的粘合React和immutable。

看到这里,思路就很清晰了:想学iflux,得先去学React和immutable。

react.js + immutable.js

  • React主要原理

React 是一个用于构建用户界面的 js 库,最大的特点就是使用virtual DOM来对页面进行描述。第一次看代码时找了很久都没找到HTML文件在哪,请教后才发现所有的标签都在React组件的render方法中。当React组件的参数(props)和状态(state)发生改变时,就会触发其生命周期,render方法中的虚拟DOM就会对界面进行刷新。页面刷新的效率非常高。

总体流程就是这样了。组件化也是React的特征之一,render方法是React组件的重要生命周期。当用户对界面进行操作时,只要修改props和state属性的值,就能快速的对用户操作进行反馈。但是,React毕竟只是管理界面的工具,对props和state的数据不能进行充分的管理,这时就要用到专门处理数据的Immutable。

  • Immutable的特点

Immutable的出现,解决了JS中的一个痛点:JS中的对象是引用赋值,新的对象简单的引用了原始对象,两个对象指向同一个地址,共享一个内存空间。这样就会使得原始对象中的数据变得不可靠。
程序猿们为了解决这个问题发明了“浅拷贝”与“深拷贝”,其实就是把原对象的数据拷贝一份放在新的对象中。这样做显得很笨重,而且浪费内存空间。
immutable给出的解决方法就是对原数据对象新建一个代理对象。当数据发生变动时,新生成变动数据的备份,与其他不变的数据一起返回给新的变量。虽然两者共享了数据,但是变量是指向两个不同的地址的。这样就能既完成值传递,又能节省内存了。
当然immutable也有其他的优点,但其处理数据对象的高效完美的与React的参数数据契合,使用immutable来管理React的状态(state)就变得理所当然了。

flux简介

介绍完React和Immutable,界面和数据都能进行处理了,那我们完全可以将所有的数据都作为React组件的state属性,当任意数据发生改变即状态(state)发生改变,就立即会刷新界面。flux便是在此设想上进行了完善形成的。

Flux将一个应用分成四个部分:

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


图为flux的运转流程,在我们设想的基础上,完成了数据的"单向流动",数据变得可控是flux的优点之一。Flux 架构入门教程中介绍了Action和Dispatcher,完全可以跳过不看,我看了也只得出一个结论:太繁杂了!这就给flux提供了改良的空间,也是iflux出现的重要原因。

iflux简介

此时我们再打开 iflux 官方介绍 看一看iflux的流程图。

+-----------------------+
|       WebApi          |
+-----------------------+
          |  
         \|/
+-----------------------+
|   Store(immutable)   |<-----+
+-----------------------+      |
           | //es5 style       |
           | StoreMixin        | msg(EventEmitter)
          \|/                  |
+------------------------+     |
|     React App          |-----|
+------------------------+
|      <Layout>          |
|        <SearchForm/>   |
|        <Toolbar/>      |
|        <DataGrid/>     |
|       </Layout>        |
+------------------------+

iflux针对flux的Action和Dispatcher的分层,提出了一个解决方案:一个应用只有一个Store,单根数据源。这样就完全不需要Action和Dispatcher了,使得框架更加的扁平化。文档中作者的思路说的很清楚。

整体思路:
  • React只承担view应该承担的事情(1. 资料呈现 2. 用户交互) 不处理任何的业务逻辑,就是根据数据去渲染dom即可,这样view可以做的很轻。
  • 应用的全部数据沉淀在一个Store中,当全部数据在顶层时,很多事情都变得简单,因为获取数据变得十分廉价。无论是校验和对数据的转换控制都变得非常简单。
  • React只是取数据渲染,其他的比如状态的变化全部通过事件pubsub通知appstore去更新数据。如果状态不会影响其他组件的级联变化可以放在组件内部消化掉。
  • 所有的ajax封装在webapi模块中,全部promise化。回调回来通过cursor更新store, cursor更新store, store通知React去rerender。
  • 区分View component 和 pure component。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容