常见问题
- Ant Design React 和 Ant Design Pro 有什么区别?
- 如何使用 Ant Design Pro?
- 是否可以在生产环境中使用 Ant Design Pro?
- 如何更新 Ant Design Pro?
- 如何从服务器请求菜单?
- 如何使用 Umi 约定式路由
- build 之后如何使用 mock 数据?
- 如何关闭页面权限控制
- 如何修改默认 webpack 配置?
- 如何添加 babel 插件?
- 如何使用图片等静态资源?
- 我的 url 里怎么有 # 号?要如何去掉?
- 如何代理到后端服务器?
- 如何添加 scss 支持?
- Git commit 时报错?
- 站点是否支持国际化?
- npm 安装 puppeteer 失败
- English Documentation?
- Ant Design Pro 从 1.X 升级到 2.X 后,页面进行重定向(redirect)时,页面布局组件(如 BasicLayout)会重新加载
提问之前,请先查阅下面的常见问题。
Ant Design React 和 Ant Design Pro 有什么区别?#
可以理解为 Ant Design React 是一套 React 组件库,而 Pro 是使用了这套组件库的完整前端脚手架。
如何使用 Ant Design Pro?#
请阅读文档 开始使用,蚂蚁金服内网用户请阅读 开始使用(蚂蚁金服用户)。
是否可以在生产环境中使用 Ant Design Pro?#
当然可以!Ant Design Pro 基于最新的 antd 版本开发,目前已有多个中后台项目正在使用。
如何更新 Ant Design Pro?#
- 单独升级
antd
版本,用于更新基础组件。 - 比较不同的 Ant Design Pro 版本间的差异,手动修改本地配置。
- 也可以尝试合并远程分支:
git pull https://github.com/ant-design/ant-design-pro
(注意,需要自行解决冲突)。 - 直接在 GitHub 上拷贝最新的典型模板。
如何从服务器请求菜单?#
只需在 models/menu 中发起 http 请求, menuData 是一个 json 数组。只需服务器返回类似格式的 json 即可。
[
{
path: '/dashboard',
name: 'dashboard',
icon: 'dashboard',
children: [
{
path: '/dashboard/analysis',
name: 'analysis',
exact: true,
},
{
path: '/dashboard/monitor',
name: 'monitor',
exact: true,
},
{
path: '/dashboard/workplace',
name: 'workplace',
exact: true,
},
],
}
....
]
注意 path 必须要在 routre.config.js 中定义。(约定式路由不需要,只需页面真实有效即可)。
如何使用 Umi 约定式路由#
有时候你可能不想要使用 config/router.config.js 的配置。那你可以考虑 umi 的约定式路由。
具体的如何在 pro 中使用约定式路由,可以查看这次提交。
注意:约定式路由比较容易实现菜单和权限的控制,但是要求所有的菜单都必须声明权限,不然均可以通过直接访问 url 的方式访问。
约定式权限的声明很有趣,你可以声明如:除某某页面之外的其他页面均需要 admin 访问权限,即可过滤所有的 url。
build 之后如何使用 mock 数据?#
可以使用 umi-serve ,在项目中或者全局安装 umi-serve。
$ yarn global add umi-serve
在项目根目录中运行 umi-serve
$ umi-serve
┌────────────────────────────────────────────────────┐
│ │
│ Serving your umi project! │
│ │
│ - Local: http://localhost:8001 │
│ - On Your Network: http://134.160.170.40:8001 │
│ │
│ Copied local address to clipboard! │
│ │
└────────────────────────────────────────────────────┘
修改项目中的请求地址,如 http://localhost:8001/api/users
。
[
{
"key": "1",
"name": "John Brown",
"age": 32,
"address": "New York No. 1 Lake Park"
},
{
"key": "2",
"name": "Jim Green",
"age": 42,
"address": "London No. 1 Lake Park"
},
{
"key": "3",
"name": "Joe Black",
"age": 32,
"address": "Sidney No. 1 Lake Park"
}
]
注意:如果没有全局安装,而只是在项目中安装,要把 umi-serve 命令添加到 package.json 的 script 里面。注意:build 之后 proxy 无效,不要在 proxy 中配置请求
http://localhost:8001/api/users
,而是要在 http 请求的时候,直接访问该地址。如在src/utils/request.js
中统一添加请求前缀。
如何关闭页面权限控制#
配置式路由,删除 config/router.config.js
中的 Routes: ['src/pages/Authorized']
配置。
{
path: '/',
component: '../layouts/BasicLayout',
- Routes: ['src/pages/Authorized'],
routes: []
...
}
详情可见PR3842。
约定式路由,关掉路由权限插件。
如何修改默认 webpack 配置?#
详见 umi 配置。
如何添加 babel 插件?#
详见 umi-babel。
如何使用图片等静态资源?#
可以直接使用绝对路径(需要图床支持),若需直接使用本地文件,可按以下方式引入。
<img src={require('../assets/picture.png')} />
我的 url 里怎么有 #
号?要如何去掉?#
请参考文档 前端路由与服务端的结合。
如何代理到后端服务器?#
Ant Design Pro 内置了 umi,umi 使用了 webpack devServer来支持代理。你只需要在 config.js 中配置 proxy 属性。只要 proxy 和 mock url 不同,是可以共存的。
{
...
proxy:{
'/server/api/': {
target: 'https://preview.pro.ant.design/',
changeOrigin: true,
pathRewrite: { '^/server': '' }, // /server/api/currentUser -> /api/currentUser
},
},
...
}
在浏览器中输入 http://localhost:8000/server/api/currentUser 预览。
如何添加 scss 支持?#
先安装额外的依赖,
$ npm i node-sass sass-loader --save
然后修改 .umirc.js
或者config/config.js
:
{
"sass": {}
}
详见 sass。
Git commit 时报错?#
脚手架默认开启了 eslint 代码风格检查,请按照提示内容进行修改后重新提交,也可以手动 npm run lint
进行检查。
站点是否支持国际化?#
pro 通过 umi 插件 umi-plugin-locale 来实现全球化的功能,详情请见 国际化。
npm 安装 puppeteer 失败#
尝试使用 cnpm 或者设置环境变量,可以查看这个 issue。
English Documentation?#
English Documentation will be translated in next couple of monthes, trace ant-design/ant-design-pro#54 和 ant-design-pro/issues/120 了解更多细节。
Ant Design Pro 从 1.X 升级到 2.X 后,页面进行重定向(redirect)时,页面布局组件(如 BasicLayout)会重新加载#
在 config.js 中添加 disableRedirectHoist: true
配置:
export default {
...
+ disableRedirectHoist: true,
...
}
This is a problem introduced using the umijs framework. For details, please refer to [Official Document] of umijs (https://umijs.org/zh/config/#disableredirecthoist).
更多常见问题可以查看 Trouble Shooting 和 umi。如果这里未能解决你的问题,欢迎 报告给我们。