首先申明:这是一个由 umi + antdesign + dva 构成的项目,本节内容主要讲述的是,搭建一个做到 组件 + 请求接口数据 + 数据管理模型 + mock 数据 的简洁、科学、有效的逻辑结构,以及怎么实现它,它有什么优点。

  1. 目录结构如下:

  2. customer/list/index.jsx:

  3. action/customer.js 文件:

  4. models/customer.js

  5. services/customer.js:

  6. mock/user.js:

  7. 上文的顺序是按照数据活动的逻辑顺序排列的

  • 用户到了 customer/list/index.js (图2)这个界面
  • 钩子函数调用了 action/customer.js (图3)中的方法
  • 触发了 models/customers.js (图4)中的异步函数 *fetchList
    • 通过 call() 方法,触发 services/customer.js (图5)中的 request 请求获取到数据并在此返回给 response(注:此处可以是请求的mock 数据,也可以是请求的真实接口的数据)
    • 然后通过 put() 方法触发 同步函数 saveList() ,将该数据保存到 state 中
  • 在 customer/list/index.js(图2) 界面中,通过 connect 方法将 state 数据与组件关联了起来,使该组件可以获取 state 数据,形成了一个完整的数据流。

注意:上文中的 request 是 umi 框架自带的请求方法,已经封装好了,在 src/utils/request 中

  1. 注意事项及优点
  • 一种数据活动所需要的各个流程节点的文件名最好是相同的,方便阅读和别人理解,如 customer.js 在 action、models、services、mock 文件夹下都是这个名字
  • action 中定义常量,如上文中的 CUSTOMER 常量,好处是在组建中调用时,在 models 下的命名空间中都是这个值,如果有修改,只要改变这处常量就好了,方便
  • 上文中的 request 是 umi 框架自带的请求方法,已经封装好了,在 src/utils/request 中
  1. 缺点
  • 目前我感觉最大的缺点是,dva 数据流的处理是使用的 generation 封装的,而目前主流思路是 Promise,偏离主流了,可能以后使用 generation 的前端开发者越来越少,后期维护成本高。这里有2篇讲述 generation 与 promise 的文章:generation 与 promise,Async、Promise 和 Generator

架构之——umi框架与dva的使用相关推荐

  1. 微服务架构的基础框架选择:Spring Cloud还是Dubbo?

    最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构.近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spr ...

  2. 微服务架构的基础框架选择

    最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 .近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理S ...

  3. 软件工程课程设计·SOA架构搭建SSM框架的网上商城系统

    软件工程课程设计·SOA架构搭建SSM框架的网上商城系统 项目简介 本系统利用SSM框架.Dubbo框架.Maven模块化开发等技术开发的一个网上商城项目,主要包括订单系统模块.购物车系统模块.搜索系 ...

  4. 使用umi快速搭建项目以及如何在umi中使用dva进行状态管理

    一.创建umi应用 1.新建umi应用并启动 mkdir umi && cd umi yarn create @umijs/umi-app yarn yarn start 2.umi应 ...

  5. MVC架构和SSM框架的个人理解

    MVC架构和SSM框架的个人理解 前言 一.原生JavaWeb对应MVC架构 二.SSM框架对应MVC架构 第一块内容(MyBatis): 第二块内容(Spring): 第三块内容(SpringMVC ...

  6. 微服务架构的基础框架选择:Spring Cloud还是Dubbo? - 推酷

    微服务架构的基础框架选择:Spring Cloud还是Dubbo? - 推酷 微服务架构的基础框架选择:Spring Cloud还是Dubbo? - 推酷 posted on 2016-07-30 2 ...

  7. 关于爬虫平台的架构实现和框架的选型(二)--scrapy的内部实现以及实时爬虫的实现...

    我们接着关于爬虫平台的架构实现和框架的选型(一)继续来讲爬虫框架的架构实现和框架的选型. 前面介绍了scrapy的基本操作,下面介绍下scrapy爬虫的内部实现架构如下图 1.Spiders(爬虫): ...

  8. 怎么在本地运行umi框架的生产模式

    怎么在本地运行umi框架的生产模式 第一种 先使用build进行编译构建, 在webstorm软件上可以在package.json文件上点击运行;或者直接在命令行上敲max build进行构建, 构建 ...

  9. umi框架SSR 服务端获取cookie

    umi框架SSR 服务端获取cookie 在项目核心文件server.js 中增加传入自定义参数到ctx中 app.use(async (ctx, next) => { const { html ...

最新文章

  1. iOS逆向(8)-Monkey、Logos
  2. HttpContext.Current.Cache vs. HttpRuntime.Cache
  3. Google 发布网页统计报告
  4. Flutter Trying to embed a platform view but the PrerollContext does not support embedding
  5. Java8新特性总结 -8.Nashorn , JavaScript引擎
  6. python+appium自动化测试-重复执行测试用例
  7. postgresql基本使用(一)
  8. 写好代码,拒绝一传到底的参数类
  9. 比较高效的表格行背景变色及选定高亮JS
  10. jfinal_sql注入问题解决
  11. linux查看dubbo版本号,Dubbo 疯狂更新!
  12. js实现数字转化为大写金额——js技能提升
  13. matlab计算四元方程解,求解四元二次方程,用matlab
  14. 第三方登录(百度账号登录)
  15. 接口测试平台代码实现15:基于生态考虑的菜单重构+意见反馈功能设计
  16. 君不密则失臣,臣不密则失身,机事不密则害成
  17. Python 05-字符串
  18. 《蔡康永的情商课》重点摘录
  19. HTML(一)静态登录注册页面附有完整网页(html+css+js)
  20. 英语学习之沪江整理 20141101

热门文章

  1. text-align 和 align的区别
  2. Java Web框架play framework的下载与环境变量配置
  3. 【数据分析】黑色星期五(代码2)销售额分析1、2
  4. 判断链表是否为【回文结构】
  5. Busybox实践2:分析busybox文件链接原理并编程模拟实现自己的busybox文件
  6. input设置点击无边框_设置Word页眉页脚奇偶页不同
  7. 玩转JetBot自动驾驶 (一)准备DIY零件清单
  8. 马尔科夫链Markov以及空间Markov Matlab代码
  9. 打造全新的网站群管理系统
  10. 国外的云服务器网站推荐哪一家(在国内可以直接上的那种)?