美文网首页
一个作业题引发的思考

一个作业题引发的思考

作者: 芝麻香油 | 来源:发表于2017-03-04 11:26 被阅读0次

前言

相信使用过 React + Rdux 的人对下面这张图都不陌生

redux.jpeg

那么,我来换种方式解释下,如下图:

redux2.png

当用户有交互行为时,通过 action 改变 M1 到 M2,即:用户对 M1 的页面做了一个操作(action)让 M1 产生了改变 M',这时 M1 变成了 M2,对应的页面也由页面一刷新成了 M2 对应的页面二;同理,M2 通过交互变成了 M3,页面也会刷新成 M3 对应的页面三。

这个过程的核心就是 数据驱动 (页面的行为使得数据改变,数据渲染出数据改变后相应的页面)

数据驱动的价值

对于下面这个交互复杂的页面:

一个交互复杂的页面.png

首先用传统的方式来处理它的页面交互,此时页面会变成这样:

传统方式.png

显而易见,**整个模块的通信已经成了蜘蛛网,而且每一条关系线都需要开发者来维护,这不仅影响开发效率,同时不好维护,容易引发各种 bug **。

让我们来尝试用数据驱动的思想来画一次这个页面的交互图:

使用数据驱动思想.png

页面之间每个模块,不用关系父子模块之间的关系,每个独立的模块都是由一个全局的 model 决定。

解析:
当 B2 改变时,它会修改 model 中对应的数据,然后 A2 的业务模块接收到变化后的数据,舒心页面。

这种交互,将每一个模块的改变,全部交给 model 处理。最大的优势在于:当交互逻辑不断增加时,这个关系链依然不会增加,因为模块之和 model 里面的数据相关联

也可以理解为,页面上的所有的操作都是对数据的操作,每个模块只需要监听自己关注的数据改变即可。

关注点:

  1. 数据结构的处理。
    • 数据决定了整个页面的展示。
  2. 模块和数据中对应的关系。

数据驱动的缺陷

  1. 初期的数据结构设计在未来会是一个定时炸弹。
  2. 数据驱动下,数据的重复和同步是一个坑。
  3. 对应某些具体的模块,单向数据流不是万灵药,整体架构单向数据驱动,具体模块可以根据场景选择最合适的。

ps:基于以上缺陷,由于这方面的代码,写的还是太少,并没体会到。在未来应该会有感触。

后续

React 页面渲染可以理解为,由许多照片一帧一帧构成的视频,每个历史状态都是一个 state。也正是由于这些 state 的变化,而引起了页面的变化。

从一开始我们写页面的时候,老师都会先让我们画原型图、组件图,然后再开始写组件。

其实,我们写完组件加逻辑的时候,不妨全局思考一下,如何构造这个数据结构,页面中每个状态又又什么联系呢?

其实,以上图片来源 copy,思考完全是由于放假前林老师布置的一个作业 301-react-form 而引发的,它的出栈篇第一条就是:谈谈你对数据驱动的理解。不知道,我这样的理解能否达到出栈的要求。也许还要在这个栈待很久......

相关文章

  • 一个作业题引发的思考

    前言 相信使用过 React + Rdux 的人对下面这张图都不陌生 那么,我来换种方式解释下,如下图: 当用户有...

  • 一句话讲一个故事

    一句台词,引发一段感慨 一个词引发一个思考

  • 引发的思考

  • 引发的思考

    一、 每天进店的各色人群中,我根据他们的行为举止大概可以归纳他们的品性怎么样: 有的人结账的时候,十分的客气,他们...

  • 造纸行业

    纸巾引发的思考

  • 引发思考

    今天参加了远道而来的学习培训班,学习用NLP的技术解决,企业文化与管理脱节的问题。 这是一个历时三个小时的培训课堂...

  • 引发思考

    刚刚步入职场,慢慢的发现一切都和以前的学生生涯有所不同。 当学生的时候可以默默地做自己喜欢的事,不用担心该是自己的...

  • 引发思考

    知乎链接-1,每天什么都不想做怎么办 知乎链接-2,人迷茫的时候该干什么

  • 引发思考

    阅读新记录 雨泽今天晚上主动给妈妈讲故事,偶尔会有不认识的字,让妈妈告诉他, 今天在学校自己阅读《大卫,不可以》,...

  • 引发思考

    世界杯以来,每天凌晨来自楼上一个男人的呐喊,漂亮!哎吆!TMD! 对这种狂热或者爱好或者是球迷不提倡,或者激动或者...

网友评论

      本文标题:一个作业题引发的思考

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