分享 其实 Redux 是最接近传统 MVC 的

mizuhashi · 发布于 2016年02月22日 · 1476 次阅读
23529

推一篇知乎答案: https://www.zhihu.com/question/33864532/answer/76482275

后端MVC清晰的原因:

  1. 系统只有一个输入源,由Controller分发
  2. 系统只有一个唯一 完整状态(数据库)

看到这个忽然感觉茅塞顿开,后端的数据都是要落地的,如果对照redux的time travel,在后端只要把数据库dump了就能time travel

有一个长久以来的思维定势: 通常前端认为的 应用状态,是后端数据在前端的映射

实际上前端的状态不止存在于model层,更多的是存在于view层,如果按后端model那样去设计前端model,状态就只能存在vm甚至dom节点内部,无从管理

redux有了action相当于后端有controller,所有操作都有了来由,想想之前做的最多的就是在view层改model的数据


感觉redux还有些地方可以优化,store不一定是朴素对象,也可以有model,但是只能是只读的,把计算属性都加在上面

store本身可以加一些用于取内容的方法,不然store结构一变,所有reducer都要改

reducer无法组合,传统mvc也会需要在一次请求中多次调用service或model的方法,reducer和action绑死就相当于逻辑只能全写在controller里,显然不合理

只要有action(route),reducer(controller),追踪状态变化已经足够了

最后想象中一个action是这样:

function reducer(state){
    var customer = state.currentCustomer();
    customer = Service.modifyCustomer(customer);
    var product = customer.favoriteProduct();
    return Object.assign({}, state, state.currentCustomer(customer), state.selectedProduct(product));
}
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册