# 一、简介
# 1.1 ant pro系统特性
- 基于
Ant Design体系精心设计 - 使用
React/umi/dva/antd等前端前沿技术开发 - 针对不同屏幕大小设计
- 可配置的主题满足多样化的品牌诉求
Mock数据实用的本地数据调试方案
# 1.2 模板
- Dashboard
- 分析页
- 监控页
- 工作台
- 表单页
- 基础表单页
- 分步表单页
- 高级表单页
- 列表页
- 查询表格
- 标准列表
- 卡片列表
- 搜索列表(项目/应用/文章)
- 详情页
- 基础详情页
- 高级详情页
- 结果
- 成功页
- 失败页
- 异常
- 403 无权限
- 404 找不到
- 500 服务器出错
- 个人页
- 个人中心
- 个人设置
- 帐户
- 登录
- 注册
- 注册成功
# 1.3 使用
$ git clone --depth=1 https://github.com/ant-design/ant-design-pro.git my-project
$ cd my-project
或者
$ npm install ant-design-pro-cli -g
$ mkdir my-project && cd my-project
$ pro new # 安装脚手架
# 1.4 目录结构
整个项目的目录结构
├── mock # 本地模拟数据
├── node_modules # 依赖库
├── public
│ ├── favicon.ico # Favicon
│ └── index.html # HTML 入口模板
├── src
│ ├── common # 应用公用配置,如导航信息
│ ├── components # 业务通用组件
│ ├── e2e # 集成测试用例
│ ├── layouts # 通用布局
│ ├── models # dva model
│ ├── routes # 业务页面入口和常用模板
│ ├── services # 后台接口服务
│ ├── utils # 工具库
│ ├── g2.js # 可视化图形配置
│ ├── polyfill.js # 兼容性垫片
│ ├── theme.js # 主题配置
│ ├── index.js # 应用入口
│ ├── index.less # 全局样式
│ └── router.js # 路由入口
├── tests # 测试工具
├── .editorconfig # 编辑器配置
├── .eslintrc # js代码检测工具
├── .ga # 未知
├── .gitignore # git版本配置
├── .roadhogrc # roadhog配置
├── .roadhogrc.mock.js # roadhog的模拟配置
├── .stylelintrc # css代码审查配置
├── .travis.yml # travis持续构建工具配置
├── package.json # web前端项目配置文件
├── README.md
└──
# roadhog摘要介绍
roadhog是一个cli工具,提供server、build和 test 三个命令,分别用于本地调试和构建,并且提供了特别易用的 mock 功能。命令行体验和create-react-app一致,配置略有不同,比如默认开启cssmodules,然后还提供了JSON格式的配置方式。- 重点介绍
roadhog有关的几个配置项,主要是在ant design pro的代码中用到了这些配置项
entry
- 指定
webpack入口文件,支持glob格式。 - 如果你的项目是多页类型,会希望把
src/pages的文件作为入口。可以这样配:
"entry": "src/pages/\*.js"
env
针对特定的环境进行配置。
server的环境变量是development,build的环境变量是production。
比如:
"extraBabelPlugins": ["transform-runtime"],
"env": {
"development": {
"extraBabelPlugins": ["dva-hmr"]
}
}
这样,开发环境下的
extraBabelPlugins是["transform-runtime", "dva-hmr"],而生产环境下是["transform-runtime"]。
"env": {
"development": {
"extraBabelPlugins": [
"dva-hmr",
"transform-runtime",
"transform-decorators-legacy",
"transform-class-properties",
["import", { "libraryName": "antd", "style": true }]
]
},
"production": {
"extraBabelPlugins": [
"transform-runtime",
"transform-decorators-legacy",
"transform-class-properties",
["import", { "libraryName": "antd", "style": true }]
]
}
}
在这段代码中,开发环境和生产环境分别配置,其中开发环境使用了
dva-hmr插件
# 二、布局
页面整体布局是一个产品最外层的框架结构,往往会包含导航、页脚、侧边栏、通知栏以及内容等。在页面之中,也有很多区块的布局结构。在真实项目中,页面布局通常统领整个应用的界面,有非常重要的作用
# 2.1 Ant Design Pro 的布局
在 Ant Design Pro 中,我们抽离了使用过程中的通用布局,都放在
layouts目录中,分别为
BasicLayout:基础页面布局,包含了头部导航,侧边栏和通知栏

UserLayout:抽离出用于登陆注册页面的通用布局

BlankLayout:空白的布局
# 2.2 如何使用 Ant Design Pro 布局
通常布局是和路由系统紧密结合的,Ant Design Pro 的路由使用了
Umi的路由方案,为了统一方便的管理路由和页面的关系,我们将配置信息统一抽离到config/router.config.js下,通过如下配置定义每个页面的布局
module.exports = [{
path: '/',
component: '../layouts/BasicLayout', // 指定以下页面的布局
routes: [
// dashboard
{ path: '/', redirect: '/dashboard/analysis' },
{
path: '/dashboard',
name: 'dashboard',
icon: 'dashboard',
routes: [
{ path: '/dashboard/analysis', name: 'analysis', component: './Dashboard/Analysis' },
{ path: '/dashboard/monitor', name: 'monitor', component: './Dashboard/Monitor' },
{ path: '/dashboard/workplace', name: 'workplace', component: './Dashboard/Workplace' },
],
},
],
}]
更多 Umi 的路由配置方式可以参考:Umi 配置式路由
# 2.3 Pro 扩展配置
我们在
router.config.js扩展了一些关于pro全局菜单的配置
{
name: 'dashboard',
icon: 'dashboard',
hideInMenu: true,
hideChildrenInMenu: true,
hideInBreadcrumb: true,
authority: ['admin'],
}
name: 当前路由在菜单和面包屑中的名称,注意这里是国际化配置的key,具体展示菜单名可以在/src/locales/zh-CN.js进行配置。icon: 当前路由在菜单下的图标名。hideInMenu: 当前路由在菜单中不展现,默认false。hideChildrenInMenu: 当前路由的子级在菜单中不展现,默认false。hideInBreadcrumb: 当前路由在面包屑中不展现,默认false。authority: 允许展示的权限,不设则都可见,详见:权限管理
# 2.4 Ant Design 布局组件
除了 Pro 里的内建布局以为,在一些页面中需要进行布局,可以使用 Ant Design 目前提供的两套布局组件工具:
Layout和Grid
Grid 组件
- 栅格布局是网页中最常用的布局,其特点就是按照一定比例划分页面,能够随着屏幕的变化依旧保持比例,从而具有弹性布局的特点。
- 而 Ant Design 的栅格组件提供的功能更为强大,能够设置间距、具有支持响应式的比例设置,以及支持 flex 模式,基本上涵盖了大部分的布局场景 https://ant.design/components/grid/
Layout 组件
如果你需要辅助页面框架级别的布局设计,那么 Layout 则是你最佳的选择,它抽象了大部分框架布局结构,使得只需要填空就可以开发规范专业的页面整体布局 https://ant.design/components/layout-cn/
- 根据不同场景区分抽离布局组件#
在大部分场景下,我们需要基于上面两个组件封装一些适用于当下具体业务的组件,包含了通用的导航、侧边栏、顶部通知、页面标题等元素。例如 Ant Design Pro 的
BasicLayout。 - 通常,我们会把抽象出来的布局组件,放到跟 pages、 components 平行的 layouts 文件夹中方便管理。需要注意的是,这些布局组件和我们平时使用的其它组件并没有什么不同,只不过功能性上是为了处理布局问题
# 四、路由和菜单
路由和菜单是组织起一个应用的关键骨架,pro 中的路由为了方便管理,使用了中心化的方式,在
router.config.js统一配置和管理
# 4.1 基本结构
- 路由管理 通过约定的语法根据在
router.config.js中配置路由。 - 菜单生成 根据路由配置来生成菜单。菜单项名称,嵌套路径与路由高度耦合。
- 面包屑 组件 PageHeader 中内置的面包屑也可由脚手架提供的配置信息自动生成
# 4.1.1 路由
目前脚手架中所有的路由都通过
router.config.js来统一管理,在umi的配置中我们增加了一些参数,如name,icon,hideChildren,authority,来辅助生成菜单。其中
name和icon分别代表生成菜单项的图标和文本。hideChildren用于隐藏不需要在菜单中展示的子路由。用法可以查看 分步表单 的配置。hideInMenu可以在菜单中不展示这个路由,包括子路由。效果可以查看exception/trigger页面。authority用来配置这个路由的权限,如果配置了将会验证当前用户的权限,并决定是否展示
# 4.1.2 菜单
# 4.1.3 面包屑
breadcrumbNameMap 示例数据如下:




新建文件
使用

