Redux和Mobx的异同

本博客 hjy-xh,转载请申明出处

二者主要概念

MobX

Redux

函数式编程相关知识

读书笔记:Javascript函数式编程指南(一)

读书笔记:Javascript函数式编程指南(二)

读书笔记:Javascript函数式编程指南(三)

读书笔记:Javascript函数式编程指南(四)

异同点

  • 设计思想:函数式 VS 面向对象

    Redux遵循函数式编程思想,MobX则更多从面向对象和响应式编程的角度来考虑问题

    可以从Reduxreducer中看出来,它就是一个纯函数,只依赖入参:

    1
    2
    3
    4
    5
    (state, action) => {
    return Object.assign({}, state, {
    ...
    })
    }

    MobX将状态包装成可观察对象,一但状态对象变更,就重新渲染视图

  • 对store管理:单一store VS 多个store

    store是应用管理数据的地方,在Redux中,应用的所有数据都集中在一个大的store中;MobX则通常是按照模块来将应用状态划分,在多个独立的store中管理

  • 数据可变性:不可变 VS 可变

    Redux状态对象通常是不可变的,一般是在原来的状态对象基础上返回一个新的状态对象;MobX则可以直接使用新的值更新状态对象

  • 整体差异

    Redux提供可以进行时间回溯的开发工具,同时因为它使用纯函数以及更少的抽象,让调试变得更加容易;MobX使用起来相对简单,但是其中有更多的抽象和封装,所以调试起来会更加复杂,同时结果也更难以预测

参考

Redux 中文官网

Redux 中文文档

你需要Mobx还是Redux?

我为什么从Redux迁移到了Mobx