使用ant design Pro开发项目的小结
一、关于上手。
1. 关于ant design Pro的介绍,自己看官网,大致上可以理解为ant design(组件库) ant design Pro (完整的项目) dva(路由 数据流管理)的组合拳。总之这个Pro是一个已经帮你打通了从搭建到测试打包发布的一整套完整的项目,你只需要站在巨人的肩膀上开发就好了。
2. 按照官网安装好项目之后,就能看到几个页面。进行开发之前,你需要一定的react语法、Js(ES6)、dva的基础。啥?全家桶都不会?没关系,写页面又不需要你精通全家桶,看完以下链接就开始写页面吧,遇到不会的再去查,这样学比较快。请按照以下顺序食用
- dva知识地图
- js快速预览
- react快速预览
- react小书
- dva文档
- react中文文档
- ES6
- MDN ??? MDN有什么好看的?如果你js不太熟,MDN有很全的API可以查阅
二、使用ant design Pro
以一个ant design Table组件展示数据为例。
这样一个页面,可以看到:左边是导航栏menu组件,右边是主体BasicLayout组件。至于什么是layout,同样,在ant design Pro官网找得到。当你刚安装好antdp的时候已经有几个页面可以参考了。此处:在页面中,有几个按钮,按钮下方是ant design 的Table组件。
一、新建一个页面。
1.在路由中新建一条页面的配置。先不要管报错,因为路由对应的component和models你还没有,继续往下看。
2.新增一条之后,需要去对应的路径新建页面。一般都放在routes文件夹中
例如我新建了一个角色管理的页面,使用connect进行关联models。
3.然后再去models文件夹中新建一个model层文件,注意namespace要对应connect的component
二、数据交互。
这个表格页面使用antd 的table 组件,自己去官网拷贝代码。这里不再赘述。主要提一下,数据是怎样交互的。
Table组件里面的行数据就是是columns,它有自己的数据格式,你需要把数据格式转换成他规定的那种。在刚装好的项目中有表格的例子你可以参考一下,只不过案例是写死的静态数据。试试看:你把columns里面的数据删除掉,然后从外部获取到数据替换掉。
1.使用生命周期函数componentDidMount在组件挂载时,去请求表格的数据。这里发起一个dispatch 触发action,type的值就是models层中的。
2.在models中会使用antd封装好的方法去请求api.js中定义好的接口地址,然后等待返回就可以处理数据。
此处response拿到服务端返回的结果。你可以在此处对数据进行处理。比如后端返回的并非是你需要的数据格式,或者你可以进行更高层次的封装。
3.再调用reducers中的save方法将数据存储。通过在UIcomponent中已经进行关联,此时this.props能够取到你传送过去的数据。然后放入Table组件即可。
此处可能讲得不是很详细,比如上述代码各种方法是做什么用的,如果你有仔细看过文章开头列举的文档,尤其是dva文档,心中应该略知一二。此处只介绍了一个很粗略的开发流程,后续我会详细讲解。
三、个人开发思想及心得
1.在使用这套框架开发几个页面之后会明显感觉到,框架有点像MVC分层,十分规范!
M层models负责控制数据
V层UIComponent ,and design以及为你准备了丰富的组件库。
C层control,我个人理解为是api层的管理,将所有的需要请求后台数据的接口统一起来,很直观也方便调用和修改。
2.ant design Pro几乎已经为你做好了一切,你只需要替换数据、接口,开箱即用。在你切完数个页面之后会发现一个问题:如何进行更高层次的封装呢?不能每次都要复制粘贴很多重复的组件代码呢?
我个人是这样做的:比如说上面举例的表格页面。
首先,我会封装一个函数,函数接收各种字段。比如后端返回一系列的input各种类型的字段给你,你在函数中对字段进行匹配,每个字段对应到ant design的组件,将数据与组件关联,然后return这个组件。最后将所有的组件push到一个数组中,然后放入render函数,即可渲染出整个页面。
这个函数有点类似于React的HOC高阶组件(传组件和props进去,rerurn新的组件出来)概念,区别是我这里传入的是每个组件所需的数据而非组件,而return出的是一个组件。
3.多利用无状态组件、函数组件。表格上最后一行,编辑/删除按钮。我是在models层进行处理的,因为columns(Table组件的数据对象)在UIcomponents层已经进行渲染了,个人认为UI组件应该尽量简化,它只负责渲染数据。我在models层中将columns中的数据进行遍历,在本地构建一个对象(编辑按钮组件、删除按钮组件)与服务端返回的对象进行合并。同时,两个按钮的组件应该本身具备自有的功能,比如在任何一个表格中调用该组件即可使用其功能。合并后将新的colums对象丢给表格组件,这样进行了一个小小的抽象。
在表格上方的按钮,同样是通过函数来输出的按钮组件。按钮具有各自的属性、功能,通过入参来传递给函数,然后通过props设置给组件,来达到复用的目的。
最后,页面上有哪些组件、哪些按钮该如何规定呢?你需要和后端协商好字段、属性,比如一个表单页面有很多种input类型,input会有type、rules(验证规则)....后端返回给你一段组件所需的属性之后,你根据这些数据即可渲染出整个页面的组件。
以上是本人萌新使用ant design Pro的小小经验,可能创建页面的案例讲的不太清晰、抽象封装的思想不知道各位能否明白我所说的。
希望各位大佬们多多指教。如何进行更高层次的封装呢?每个页面需要对应路由、models、api接口地址、能否再进行封装达到动态的目的呢?这样连修改接口的重复工作也省了。
感谢阅读。
使用ant design Pro开发项目的小结相关推荐
- Ant Design Pro开发后台管理系统(新增页面)
通过实际demo演示一个管理后台的开发过程 知识点: 1.新增router,新增models 新增菜单配置 1.如上图所示,打开/src/common/menu.js可以看到菜单列表 其中 menuD ...
- Ant Design Pro -- 02项目结构@20210331
一.项目的目录结构 ├── config # umi 配置,包含路由,构建等配置 ├── docker # 部署 ├── functions # ├── mock # 本地模拟数据 ├── publi ...
- Ant Design Pro 开发上手
目录 地址 安装 目录结构 本地开发 打部署包 路由控制 地址 首页:https://pro.ant.design/index-cn 源码:https://github.com/ant-design/ ...
- ant design pro模板_Ant Design Pro 学习笔记
学习笔记 摘要介绍 Ant Design Pro 是一个基于Ant Design搭建起来的模板项目.它提供了两个主要布局:BasicLayout.UserLayout,在布局基础上制作了20多个基础页 ...
- ant design pro vue左侧菜单自定义图标
做ant design pro vue项目的时候突然想修改左侧菜单的图标,在修改途中发现源码中提供的方法方法居然不生效(如下所示) 在src/assets/icons文件夹中下载svg图标 在src/ ...
- ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】
一.概述 1.1.脚手架概念 编程领域中的"脚手架(Scaffolding)"指的是能够快速搭建项目"骨架"的一类工具.例如大多数的React项目都有src,p ...
- ant design pro 加载慢_ant design pro项目打包后页面加载缓慢
用ant design pro框架做的项目,打包之后每一个页面加载的速度都特别慢,在.webpackrc里面配置了ignoreMomentLocale: true, disableDynamicImp ...
- Ant Design Pro项目启动报错 ChunkError mf-va_remoteEntry umi
版本: Ant Design Pro 5,typescript 背景: 有个项目写完,后期等待沟通,于是去做了其他项目.回头再来看这个项目时,无法启动,删除node_modules也无法启动. 解决办 ...
- React + Ant Design Pro项目实现keep-alive页签
背景 PC端管理系统,采用 ant design pro 方案,它是阿里的一个管理系统框架,技术栈是react. 相比vue,react一个先天不足是不支持 keep-alive,所以管理系统中的多页 ...
最新文章
- mysql负载均衡与同步_MySql数据库从同步负载均衡实时备份
- 从“小”培养AI安全意识:OpenAI开源具有安全约束的RL训练工具
- 加密解密、食谱、新冠序列,各种有趣的开源项目Github上都有
- C语言 其他标准函数
- 批处理命令set截取字符详解
- C语言课程设计---歌厅歌曲管理系统
- oracle语句求保有率,Oracle之保有量计算(当前记录等于前几条记录之和)
- html后台数据分类管理,细分数据.html
- cad两直线相交画圆弧_在CAD图纸中绘制中心线的操作技巧
- Android电话拦截研究
- 操作系统15----80386处理器基础
- 帆软日期格式转换_FineReport中日期时间函数使用总结
- GWAS和GS的结合:Single Step GWAS的应用
- Google Chrome 75.0.3770.100 插件丰富且自带翻译的浏览器
- 【javascript】收藏本站——添加到浏览器收藏夹
- Win10 蓝屏 SFC /SCANNOW发现损坏文件
- Android系统刷机教程之解bl锁
- 异常:Parameter 0 of constructor in com.ylz.supervise.childmodule.sys.log.strategy.StrategyContext req记
- 匹配移动,联通,电信手机号码正则表达式
- python 求解水仙花数,自幂数
热门文章
- Java基本语法(8)--比较运算符
- java new string作用_java中直接new String对象?
- Java中的注解是如何工作的?
- Zabbix-3.0.0 安装Graphtree
- Ioc Autofac心得
- unexpected AST node
- [转]在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录...
- 408计算机考研大纲 doc,2020计算机专业408基础综合考研大纲
- Eigen(2) 模块与头文件
- linux route命令的使用详解