Redux vs Mobx

那么具体到这两种模型,又有一些特定的优缺点呈现出来,先谈谈 Redux 的优势:

  1. 数据流流动很自然,因为任何 dispatch 都会导致广播,需要依据对象引用是否变化来控制更新粒度。
  2. 如果充分利用时间回溯的特征,可以增强业务的可预测性与错误定位能力。
  3. 时间回溯代价很高,因为每次都要更新引用,除非增加代码复杂度,或使用 immutable。
  4. 时间回溯的另一个代价是 action 与 reducer 完全脱节,数据流过程需要自行脑补。原因是可回溯必然不能保证引用关系。
  5. 引入中间件,其实主要为了解决异步带来的副作用,业务逻辑或多或少参杂着 magic。
  6. 但是灵活利用中间件,可以通过约定完成许多复杂的工作。
  7. 对 typescript 支持困难。

Mobx:

  1. 数据流流动不自然,只有用到的数据才会引发绑定,局部精确更新,但免去了粒度控制烦恼。
  2. 没有时间回溯能力,因为数据只有一份引用。
  3. 自始至终一份引用,不需要 immutable,也没有复制对象的额外开销。
  4. 没有这样的烦恼,数据流动由函数调用一气呵成,便于调试。
  5. 业务开发不是脑力活,而是体力活,少一些 magic,多一些效率。
  6. 由于没有 magic,所以没有中间件机制,没法通过 magic 加快工作效率(这里 magic 是指 action 分发到 reducer 的过程)。
  7. 完美支持 typescript。

到底如何选择

从目前经验来看,我建议前端数据流不太复杂的情况,使用 Mobx,因为更加清晰,也便于维护;如果前端数据流极度复杂,建议谨慎使用 Redux,通过中间件减缓巨大业务复杂度,但还是要做到对开发人员尽量透明,如果可以建议使用 typescript 辅助。

最新文章

  1. [k]优雅的css
  2. Java 的printf(转)
  3. BZOJ4113 : [Wf2015]Qanat
  4. Cocos2d-x开发实例介绍帧动画使用
  5. BZOJ 1151 傲娇的人 排序
  6. &&与&
  7. Python的多线程编程
  8. 【ASP.NET MVC 学习笔记】- 03 Razor语法
  9. TOTP 介绍及基于C#的简单实现
  10. 【译】深度双向Transformer预训练【BERT第一作者分享】
  11. C++ GetComputerName()
  12. MySQL字符集详解
  13. C++学习(三十七)(C语言部分)之 链式栈(推箱子实现)
  14. 将小程序的logo换成属于自己的头像
  15. python -- 异步IO 协程
  16. 转:JDK动态代理为什么必须用接口以及与CGLIB的对比
  17. 转:【专题四】自定义Web浏览器
  18. 使用bat批处理文件定时自动备份sqlserver数据库
  19. js中文乱码
  20. xml的相关知识

热门文章

  1. Docker 存储引擎
  2. LAN、WAN、WLAN的区别
  3. 关于Android TaskAffinity的那些事儿
  4. ubuntu git 下添加 ssh
  5. BF3 里面的z cull reverse reload
  6. eclipse 安装java web插件
  7. apache压缩页面, 全面加速网站
  8. Oracle SQL 查询优化.Part4
  9. HandlerMethodArgumentResolver 参数解析器
  10. java 单例模式(转载)