架构之——umi框架与dva的使用

首先申明:这是一个由 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 与 promiseAsync、Promise 和 Generator
使用React、Umidva组合开发Web应用时,你需要遵循一系列步骤来构建和组织你的项目。这里是一个基本的介绍: 1. **创建项目**:首先,你需要创建一个新的Umi项目。Umi是一个可插拔的企业级React应用框架,它可以帮助你快速搭建项目结构,并提供了一些约定和最佳实践。你可以通过命令行使用Umi的脚手架工具来创建新项目: ``` npx umi init my-app cd my-app ``` 2. **安装dva**:dva是一个轻量级的前端框架,它基于Redux和Redux-Saga,提供了一种更简洁的方式来组织你的应用状态和处理数据流。在项目中安装dva: ``` npm install dva ``` 3. **配置路由**:Umi使用约定式路由,你只需要在`src`目录下创建对应的文件和目录来定义你的页面和路由。例如,创建一个`pages`文件夹,并在其中创建`user.js`文件,这将会被识别为一个用户页面,并且对应的路由会被自动生成。 4. **使用dva模型**:在dva中,模型(model)是应用中数据和逻辑的抽象。你需要定义模型来管理状态,并且定义effect来处理异步逻辑。在Umi项目中,你可以创建一个`models`目录来存放你的dva模型。 5. **连接视图和模型**:在React组件中,你可以使用`connect`方法来连接组件和dva模型。这样,你的组件就可以访问模型中的状态,并且可以触发模型中的dispatch来更新状态。 6. **数据流管理**:在dva中,使用Redux的`dispatch`来触发一个action,然后action会调用对应的reducer来更新状态,或者调用effect来处理异步逻辑。这是一个单向数据流的过程,有助于维护状态的一致性和可预测性。 7. **启动和构建项目**:在开发过程中,你可以使用以下命令来启动开发服务器: ``` npm start ``` 当你需要构建项目用于生产环境时,可以使用: ``` npm run build ``` 这将会生成优化后的静态文件,可以部署到任何静态文件服务器上。 这些步骤为你提供了如何使用React、Umidva组合进行Web应用开发的基础。随着项目的深入,你可能还需要了解更多的高级特性,比如插件、中间件、路由配置、布局组件等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值