介绍:作为一个后端,从头学习前端花费的精力有点过大,使用一个开源的模板框架是一个不错的选择
初始化
要求 node.js 版本:v16.20
使用 pro-cli 脚手架来初始化项目
## 使用npm
npm i @ant-design/pro-cli -g
pro create myapp
选择使用 umi@3,然后选择 simple 创建一个简单的脚手架
推荐使用 yarn 包管理器
安装 yarn
npm install --global yarn
安装依赖
进入刚才创建的项目文件夹,安装项目所需依赖
cd myapp
yarn
运行项目
安装依赖完成后,先尝试运行一下,看看有没有报错(因为 antd-pro 项目有自带的模拟数据,可以通过 start 命令运行起来)
yarn start
运行成功
访问:http://localhost:8000 账号密码为:admin/ant.design
注意:如果登录页出现了样式丢失,如下图
解决方法: src/pages/user/login/index.less页面代码第一行
去掉
(reference)
页面恢复正常其他页面同理
修改项目
去除国际化
运行
yarn run i18n-remove
去除国际化成功
安装重型组件
yarn add @ant-design/pro-components
如果安装组件后报错:
解决方法:
打开 config/config.ts 文件
将
loading: '@ant-design/pro-layout/es/PageLoading',
注释掉
将 src 目录下的 .umi 文件夹删掉
重新启动项目就可以了
删掉多余文件夹
删掉项目文件夹下的 e2e 文件夹、locales 文件夹、tests文件夹
开始开发
proxy.ts
设置代理,target
为后端服务地址,changeOrigin: true,
表示允许携带cookie
export default {
dev: {
'/api/': {
// 要代理的地址
target: 'http://localhost:8080',
changeOrigin: true,
},
},
test: {
'/api/': {
target: 'https://proapi.azurewebsites.net',
changeOrigin: true,
pathRewrite: { '^': '' },
},
},
pre: {
'/api/': {
target: 'your pre url',
changeOrigin: true,
pathRewrite: { '^': '' },
},
},
};
defaultSetting.ts
title
为网站的标题
import { Settings as LayoutSettings } from '@ant-design/pro-components';
const Settings: LayoutSettings & {
pwa?: boolean;
logo?: string;
} = {
navTheme: 'light',
// 拂晓蓝
primaryColor: '#1890ff',
layout: 'mix',
contentWidth: 'Fluid',
fixedHeader: false,
fixSiderbar: true,
colorWeak: false,
title: '学生获奖管理系统',
pwa: false,
logo: 'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg',
iconfontUrl: '',
};
export default Settings;
globalRequest.ts
自己封装请求工具,在 src/pugin 目录下创建 globalRequest.ts 文件 代码如下:
/**
* request 网络请求工具
* 更详细的 api 文档: https://github.com/umijs/umi-request
*/
import {extend} from 'umi-request';
import {message} from "antd";
import {history} from "@@/core/history";
import {stringify} from "querystring";
/**
* 配置request请求时的默认参数
*/
const request = extend({
credentials: 'include', // 默认请求是否带上cookie
prefix: process.env.NODE_ENV === 'production' ? 'http://user.kbws.xyz' : undefined
// requestType: 'form',
});
/**
* 所有请求拦截器
*/
request.interceptors.request.use((url, options): any => {
return {
url,
options: {
...options,
headers: {},
},
};
});
/**
* 所有响应拦截器
*/
request.interceptors.response.use(async (response, options): Promise<any> => {
const res = await response.clone().json();
if (res.code === 0) {
return res.data;
}
if (res.code === 40100) {
message.error('请先登录');
history.replace({
pathname: '/user/login',
search: stringify({
redirect: location.pathname,
}),
});
} else {
message.error(res.description)
}
return res.data;
});
export default request;