redux和mobx比较(一)
2024-09-05 00:17:18
Redux vs Mobx
那么具体到这两种模型,又有一些特定的优缺点呈现出来,先谈谈 Redux 的优势:
- 数据流流动很自然,因为任何 dispatch 都会导致广播,需要依据对象引用是否变化来控制更新粒度。
- 如果充分利用时间回溯的特征,可以增强业务的可预测性与错误定位能力。
- 时间回溯代价很高,因为每次都要更新引用,除非增加代码复杂度,或使用 immutable。
- 时间回溯的另一个代价是 action 与 reducer 完全脱节,数据流过程需要自行脑补。原因是可回溯必然不能保证引用关系。
- 引入中间件,其实主要为了解决异步带来的副作用,业务逻辑或多或少参杂着 magic。
- 但是灵活利用中间件,可以通过约定完成许多复杂的工作。
- 对 typescript 支持困难。
Mobx:
- 数据流流动不自然,只有用到的数据才会引发绑定,局部精确更新,但免去了粒度控制烦恼。
- 没有时间回溯能力,因为数据只有一份引用。
- 自始至终一份引用,不需要 immutable,也没有复制对象的额外开销。
- 没有这样的烦恼,数据流动由函数调用一气呵成,便于调试。
- 业务开发不是脑力活,而是体力活,少一些 magic,多一些效率。
- 由于没有 magic,所以没有中间件机制,没法通过 magic 加快工作效率(这里 magic 是指 action 分发到 reducer 的过程)。
- 完美支持 typescript。
到底如何选择
从目前经验来看,我建议前端数据流不太复杂的情况,使用 Mobx,因为更加清晰,也便于维护;如果前端数据流极度复杂,建议谨慎使用 Redux,通过中间件减缓巨大业务复杂度,但还是要做到对开发人员尽量透明,如果可以建议使用 typescript 辅助。
最新文章
- [k]优雅的css
- Java 的printf(转)
- BZOJ4113 : [Wf2015]Qanat
- Cocos2d-x开发实例介绍帧动画使用
- BZOJ 1151 傲娇的人 排序
- &;&;与&;
- Python的多线程编程
- 【ASP.NET MVC 学习笔记】- 03 Razor语法
- TOTP 介绍及基于C#的简单实现
- 【译】深度双向Transformer预训练【BERT第一作者分享】
- C++ GetComputerName()
- MySQL字符集详解
- C++学习(三十七)(C语言部分)之 链式栈(推箱子实现)
- 将小程序的logo换成属于自己的头像
- python -- 异步IO 协程
- 转:JDK动态代理为什么必须用接口以及与CGLIB的对比
- 转:【专题四】自定义Web浏览器
- 使用bat批处理文件定时自动备份sqlserver数据库
- js中文乱码
- xml的相关知识