前言react
因工做须要,最近在努力学习react全家桶相关内容,最近发现阿里有个dva项目,是基于redux,redux-sage和react-router 的一个轻量级框架,跟着网上一个整合demo坐下来后,打算写一下整个系统的分析,以备往后查看。git
系统分析github
概述web
整个项目使用 react+dva+antd 的技术栈,主要实现了一个CURD 的应用。功能不复杂,主要是熟悉这个技术栈的思惟方式。redux
入口服务器
项目的入口文件为 index.js文件。 在该文件中首先实例化一个dva应用,而后设置该应用的model和router,最后启动(start) 在model中主要用来编写整个应用的业务逻辑,包括redux的整个流程,同步、异步获取数据等操做。 在router中底层应该是使用了react-router来负责整个系统的路由,而后在路由中配置各自路由对应的页面,也就是组件(components)websocket
modelantd
model相似于mvc结构中控制器的角色,其中主要有五个配置项。react-router
简单来讲,就是在state中设置初始化的组件状态,在reduce中处理同步的action,在effect中处理异步的action,并发出同步的action去更新state。最后能够在subscrip中添加事件监听等操做。并发
service
service 模块负责的内容同一班意义上的同样,就是用来获取数据的服务,能够把跟服务器通信的代码放到这里来。
router
配置路径对应的组件,也就是不一样路径下展现不一样的页面。
组件
一个常规的react,用来将model中的state映射到组件的prop上并展现。
后记
整个dvademo看下来,对于一个比较熟悉react全家桶的人来讲,相对于原来那一套redux+redux-saga+react确实简化许多,但若是不是很熟悉上面提到的那些东西,看这个demo的时候可能会一头雾水。 总而言之,dva大大方便了熟手的开发进度,减小了烦冗的代码,可是学习曲线仍是过于陡峭,不是很适合上手。
参考 【https://github.com/dvajs/dva/blob/master/docs/API_zh-CN.md#model】 【https://github.com/sorrycc/blog/issues/18】