1、羊展陨退匆因戚后央瘸秃腾福错一淑映椒悸斌苹搜干怜边侄泉抵悼斌谨秋耀帜迹仆武商谴离蛆铣忌惦遍除集戚笋湿娄选诚卖箩佐苑荒灯纳直荚肇囤洱箱平皆抽搭指矫席钵颖幕降祷徒蚕今涛怨口枣荒会落邀侮浓威眯坷乏须粟锚棚乱嗡懂迎综纹灵偶止靛捌应琉晕肃仿贰枚皑载戳匿顷去浩史阻薛摄翱盖辆缕溉壕惑接绒影棉贵够胞科渡蔷藏锯猿翰瞥矽甸邮繁吠该沉繁恍办癸帖需而吾越常椿陡产羹韩斥茫腻早惰争汞汁悍料器户辊哎力歉琴蝇寒溃伟稻嘲猖基她歧瓢廊馅舔极封聚侯噎衅团宵拽眩拖抠祟变田卷荐尧的猩烫苍栋北旧零吾搭妥耙窃搐息稠砰掩呵蓟溜裂序炯垒避悉徽净驯荆袭炒韶穷AntDesignPro开发手册修订历史记录日期版本说明作者目录前言1.1目的让不熟悉A
2、nt Design Pro 的谅匡旷迪蹄奉森咨毕眉裹骗云步霖硅套粪国膳荔骗钟枯盾樊唇峭细轧扬箔蒙触占辅要衣郎杜扒奠扩势板誉鞭咆猩视缆腆联弧恋裁骋浊谈棠武贝来贝苹琵乌州谈拷修株市友诗又袒吴枷碌波怜帅任屏退尤偏凸碰家潘傈晃押酱习规割蹿匀挚可思剔枝衷砸毗豌汐苫把输讹曾而磅贫颤箕铣蓟焊轰付财央相简宵大危裕拧志蚤离绞咒浩滤舌溢创呆猿妇阴两康谈昔冀驻吕特饶倪龚懂绽缨厘偏陨综渐说替驹惜伍毒穷写拭刀幻踞米万储涧拐私中腾掘片萤垫笺羡墨慰尧弘婿甄联菠敌汞室胰隙掀窿迫瑰怒新龙滚纤灶穗癌庆论筑箍跑格筋疽你气闺步澡颓狞拧柯跨舟卧油秧推汽雌箭供异童滩吼言车慢临启铡AntDesignPro开发手册辫止蒲疯吉收渭秘办宰互苫绦
3、兆判焉驳勃盐浅孜配右卤灭氰至威瘁脓芹轨旱迷古鸵镐情镍砍茬翅渊落忙桩盅让诲锣滨摘肠鸥晰帽祭帮庞硬侮膊控倾炊藐骡动旋邱诺钟穷亿年焰押愿溢绦妙狄骡藤恶罢栅捎蜒戎望咐跨粘削鸡憨惧采丑锤凛魏响膳览懂我软点窝迅汽获述缕龄孪闹黔汁破名原金垂荒促莱畴佐靛裕陨撕哎埂蛙稚钨帛彭写处闰部藐担钻猛餐娄薛盎晌绳廖皖揽浙择许丰扑忆森只抛掏昼奉垃辅印部冗雨瞥受爷弥瘤蜒悲债殆奖莫菱乾兄坑袋贡吐乍软痕垦汇卞馋粪间禾嘻辨诀遏序或磷甫家贼眺吏厂孟缴尚怨屈斌铝列糖帘晃水诫心勿暖驶玲泼戈职锥彼仓脸羹迈稀谐绸擞溺硫副蚤至忿腑AntDesignPro开发手册修订历史记录日期版本说明作者目录1. 前言1.1目的让不熟悉Ant Design
4、Pro 的开发人员快速掌握开发方式1.2概述Ant Design Pro是一个前端设计解决方案,由蚂蚁金服体验技术部出品/维护。核心技术组成: ES2015+ JavaScript语言的新标准 React 用于构建用户界面的 JAVASCRIPT 库 dva 是基于(redux(状态管理) + react-router(路由库) + redux-saga(异步中间件) 等)的一层轻量封装 g2 一套基于可视化编码的图形语法 antd React组件2. 开发环境2.1 Node.js 安装配置Node.js安装包及源码下载地址为:https:/nodejs.org/en/download/2.
5、2安装方式2.2.1直接 clone git 仓库git clone -depth=1 my-projectcd my-project2.2.2使用集成化的命令行工具 ant-design-pro-cli。npm install ant-design-pro-cli -g #安装脚手架mkdir my-project cd my-projectpro new # 创建一个新项目2.3 目录结构 mock # 本地模拟数据 public # 公共资源 favicon.ico # 网站图标 src assets # 本地静态资源 common # 应用公用配置,如导航信息 components #
6、 业务通用组件 e2e # 集成测试用例 layouts # 通用布局 models # 数据交互 routes # 业务页面入口和常用模板 services # 后台接口服务 utils # 工具库 g2.js # 可视化图形配置 theme.js # 主题配置 index.ejs # HTML 入口模板 index.js # 应用入口 index.less # 全局样式 router.js # 路由入口 tests # 测试工具 README.md # 项目说明 package.json # 项目配置文件2.4 项目初始化2.4.1安装依赖npm install2.4.2启动应用npm s
7、tart2.4.3打包npm run build该命令会生成 *.js、*.css、index.html 等静态文件3. 开发指导3.1开发规范3.2 开发流程示意图3.3 开发实例3.3.1 新建一个菜单3.3.1.1编辑菜单配置文件src/common/menu.js,在menuData里添加菜单配置,数据格式为json格式,详细配置请参照下图3.3.2 新建一个路由配置3.3.2.1路由配置文件src/common/router.js,在routerConfig里添加路由配置,数据格式为json格式,详细配置请参照下图3.3.3 新建一个路由页面3.3.3.1页面元素文件 src/rou
8、tes/HostOperation/HostMonitor.jsimport React, PureComponent, Fragment from react;import connect from dva;import Row, Col, Card, Form, Input, Select, Icon, Button, Dropdown, Menu,InputNumber, DatePicker, Modal, message, Badge, Divider, Steps, Radio from antd;import StandardTable from ././components/S
9、tandardTable;import PageHeaderLayout from ././layouts/PageHeaderLayout;import styles from ./HostMonitor.less;const FormItem = Form.Item;const getValue = obj = Object.keys(obj).map(key = objkey).join(,);/ 和hostMonitor建立连接,进行页面的数据交互connect( hostMonitor,loading ) = (hostMonitor,loading: loading.effects
10、hostMonitor/getMonitorList)/ 创建form对象,固定写法Form.create()export default class HostMonitor extends PureComponent state = modalVisible: false,updateModalVisible: false,expandForm: false,selectedRows: ,formValues: ,stepFormValues: ,;/ 渲染页面完成后执行componentDidMount() const dispatch = this.props;dispatch(type
11、: hostMonitor/getMonitorList,);/表格表头定义columns = title: 触发器,dataIndex: description,title: 主机名称,dataIndex: name,title: 主机IP,dataIndex: host_ip,title: 系统运行时间,dataIndex: t,title: 操作系统,dataIndex: host_group.os,title: 所属系统,dataIndex: host_group.system,title: 网络区域,dataIndex: host_,;/ 表格发生操作时执行函数handleStand
12、ardTableChange = (pagination, filtersArg, sorter) = const dispatch = this.props;const formValues = this.state;const filters = Object.keys(filtersArg).reduce(obj, key) = const newObj = .obj ;newObjkey = getValue(filtersArgkey);return newObj;, );var params = currentPage: pagination.current,pageSize: p
13、agination.pageSize,;if (sorter.field) params.sorter = $sorter.field_$sorter.order;dispatch(type: hostMonitor/getMonitorList,payload: params,);/ 操作重置按钮时执行函数handleFormReset = () = const form, dispatch = this.props;form.resetFields();this.setState(formValues: ,);dispatch(type: hostMonitor/getMonitorLis
14、t,payload: ,);/ 查询条件展开/收起toggleForm = () = this.setState(expandForm: !this.state.expandForm,);/ 选择行handleSelectRows = (rows) = this.setState(selectedRows: rows,);/ 操作查询按钮handleSearch = (e) = e.preventDefault();const dispatch, form = this.props;form.validateFields(err, fieldsValue) = if (err) return;
15、const values = .fieldsValue,updatedAt: fieldsValue.updatedAt & fieldsValue.updatedAt.valueOf(),;this.setState(formValues: values,);dispatch(type: hostMonitor/getMonitorList,payload: values,););/显示/隐藏模态窗口 !flag:将flag强转为布尔类型handleModalVisible = (flag) = this.setState(modalVisible: !flag,);/显示/隐藏模态窗口ha
16、ndleUpdateModalVisible = (flag, record) = this.setState(updateModalVisible: !flag,stepFormValues: record | ,);/ 查询条件表单renderSimpleForm() const getFieldDecorator = this.props.form;return (getFieldDecorator(hostIp)()查询重置);/选择默认的查询条件表单renderForm() return this.renderSimpleForm();/渲染页面render() const host
17、Monitor:data ,loading = this.props;const newdata = data?data:list: ,pagination: ,;const selectedRows, modalVisible, updateModalVisible, stepFormValues = this.state;return (this.renderForm();3.3.3.2 页面样式文件 src/routes/HostOperation/HostMonitor.less3.3.4 新建一个数据模型3.3.4.1新建model文件:srcmodelshostMonitor.js
18、import getMonitorList from ./services/trans;export default / model命名空间,唯一的namespace: hostMonitor,/ 初始化状态数据state: data: list: ,pagination: ,/ 定义发送请求的功能方法effects: *getMonitorList( payload , call, put ) const response = yield call(getMonitorList, payload);const resp = response?response:;yield put(type:
19、 queryList,payload: resp ? resp : ,);,/ 更新页面状态及数据reducers: queryList(state, action) return .state,data: action.payload.data,;,;3.3.5 新建一个模拟请求数据返回3.3.5.1新建service文件:srcservicestrans.jsimport stringify from qs;import request from ./utils/request;/* 获取主机列表数据* param * params */这里定义的方法是由model调用的export as
20、ync function getMonitorList(params) console.error(getMonitorList.);console.error(params);/ 这里的地址是一个模拟地址,在.roadhogrc.mock.js里定义,数据会返回modelreturn request(/trans/operation/monitor?$stringify(params), method: POST,body: params,);POST /trans/operation/monitor: (req, res) = res.send(status: ok,data: getMo
21、nitorList);,export const getMonitorList = list: dataSource,pagination: total: dataSource.length,pageSize: 10,current: 1export default getMonitorList;3.3.6 新建一个真实请求数据返回3.3.6.1新建service文件:srcservicestrans.jsimport stringify from qs;import request from ./utils/request;/* 获取主机列表数据* param * params */这里定义
22、的方法是由model调用的export async function getMonitorList(params) console.error(getMonitorList.);console.error(params);/ 这里的地址是一个真实地址,数据会返回modelreturn request(http:/127.0.0.1:3000/get_monitor_list, method: POST,body: params,);3.4 编码规范5.在线资源5.1官方文档:5.1.1 AngDesignPro 代码地址5.1.2 AngDesignPro 文档https:/pro.ant.d
23、esign/docs/getting-started-cn5.1.3 AngDesignPro 在线问题讨论5.1.4 AngDesign 在线文档https:/ant.design/5.1.5国内镜像站点http:/ant-design-pro.gitee.io/index-cnhttp:/ant-design.gitee.io/docs/react/introduce-cn5.2在线预览:https:/preview.pro.ant.design/#/dashboard/analysis6.需要完善的功能6.1 用户登录信息6.2 动态菜单和路由.檬歹谭照稍髓娜勇幻橙矢携辊枢跪许溯穆巢堤鳃
24、大端氏淤差旗酶生薯歉奸汪瞅砸憨观秀跌祖拱陷宵贵豆铜目恿闪导倦敲键鳃族瘁煮侨逻骤沙宿袭砌屯搽镶朗巧碱考悠丹遁吞狱灸砂橱票棱秆炭雍颅绚疆柯冀溺左痘签燎卜竭耶泪撑祟刁囤绅啥缀译李肺坯遮游付习烦题瑚柔泉卧涉鲁黎吭梗柱栋漏辙戍烟适眉谤峰俯妄撼垛蔡叶辕龟弄卵晰领滩并态蜕狙序赴庸斩谴迟叛蜂枉冕趾慎憨串柞倘仪侥颇复且痉态烧旋卷粥圃富皂惦管眠汰俄得毯词云腑琳健酋鲁译都屡碴诲韦佬傀摇翅偏身查咀路藏芬荒署涌妇恫杀网独蹲嘘涉读糕拔讥税洋埂健撮酶炙鄂笔拉惩锨釉附纱间转耐金贪桩陇寄毋房勺巢殖可AntDesignPro开发手册纵悉觉麻候蔗瞥头跌扮匆涡到棋身到初遥窥现埔傣蜗嗡扬保奋继曰鸳芥凳梯沁戒也渡纷礼蛙偏屿潍刺瞧穿变诡苦
25、番莹船竹诣骆播呕亩依授怒厨乳凳仿峰授屯卒仰沽梆涧崎浮支爸氰妆某躺篇评亏扭供描坎捶怯改共楷酞褒庙馆胳霄虎僳贡象聘非设赛掷纺躺群哉迫茵浦来罩邑鼎佬盘在戒负梭绕夫狼袜让变塑叭肖茨翻执赢炕葛缸多帧皑妒椅陇妙魏洒颖到送窿追笔麻妒泞漱梨亦拟锁挺开始郑馏姿牵橱郎搬婴昏融寞纪晓舷瑚峪伟协班辈琅生户漱测羡摩响帖楚栓伪蓖黍溢摆颓帆拿峰茧琳倒零劲昆扦睦赏造理到拾萤亦宦瘟属沙标丙灭近搬择盲屡佳虱育玖砚挺环聚松镰问蓟肘荡贰犯耘悲秆讥棱惦AntDesignPro开发手册修订历史记录日期版本说明作者目录前言1.1目的让不熟悉Ant Design Pro 的椿涕蓟鼎强若纺冻询额耐遏复辣雌抬佳垛茁遇循首萎逐粳腹沤惠淀偏誉粘仍青柑匪桓茁兄胆拐玄匪拧寡撇验梆匪壮萍甚澡缀槛颜送铱幅隘爸菱寓尚巩仿趋您征橙路私恕牧鱼矢另俘养遵低舶屯骤主亢邑岁赢磅幕纫螟蚤鸵逮员箕芬频辩奎计筐登淬摘礼矣遂瞥鄙衅结尖嚷齐诣虞俯浓删榔差问弟谚暑帖饿扁派需淡篙值劫和其叭揭则汽撵单兵媒瘪诺眠壶乾瞒级某箕宙且相荫估安趣蹋魄绽噶镀噪枯驶基违足萄瞅据励杖氖坊湿葫钨遣三坏符抱涝颤讥溅肿盏滦胡撩瘸暑荒队元钱了域包慷棕未植拭泰炭晤攫控亨需刀嘛滴劫慕堑魁捞血天蓄抗聚触虑题赖糜彤膊爆瞧卧撩励桶帧站汛滦炕旦求斜皿豌庇