dva源码解析(一)

写在前面

dva是蚂蚁金服推出的一个单页应用框架,对reduxreact-routerredux-saga进行了上层封装,没有引入新的概念,但是极大的程度上提升了开发效率;下面内容为本人理解,如有错误,还请指出,不胜感激。

redux的痛苦

redux的优点很多,痛点也有,比如异步控制,redux-saga的出现使得异步操作变得优雅,但是基于redux-saga不得不承认的一点就是开发过程实在是太麻烦了,假若增加一个操作,不得不操作actionsreducerssagas,对于sagas可以还需要进行watch,而后还要进行fork;(PS: 本来就够麻烦了,再加上一个sagas);在添加一个操作时,不得不操作这么多的文件,实在是麻烦,而dva的出现在一定程度上解决了这个问题。

dva基本概念

未使用dva下的目录经常是这样的:

actions
   --/ user.js
   --/ team.js
reducers
   --/ user.js
   --/ team.js
sagas/
   --/ user.js
   --/ team.js

dva将其合并:

models
   --/ user.js
   --/ team.js

dva中有着几个概念:

namespace       =>  combineReducers中对应的key值
state           =>  对应初始的state,也就是initialState
effects         =>  saga的处理函数
reducers        =>  对应reducers,不同的是,写法上将switch...case转化为对象  

除了这些以外,dva中还有subscriptions,这一概念来源于elm

dva的实现

初始化

const app = dva({
    history: browserHistory
});

上面的过程发生了什么?
dva本质上调用了下面函数:

function dva(hooks = {}) {
   
    const history = hooks.history || defaultHistory;
    const initialState = hooks.initialState || {};
    delete hooks.history;
    delete
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值